<!-- 博客 - 页面布局 > 上中下 -->



<!DOCTYPE html>
<html lang="zh-CN" data-default-color-scheme=dark>
<!-- 博客 - 导航栏上方 -->


<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/blog/img/fluid.png">
  <link rel="icon" href="/blog/img/icon/dw.png">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="author" content="Memory">
  <meta name="keywords" content="">

  
    <meta name="description" content="🍨 记录短暂的实训基地里的日子，回忆那些值得铭记的瞬间">
<meta property="og:type" content="article">
<meta property="og:title" content="逐梦之旅：我梦想启航的港湾，也是我成长的沃土">
<meta property="og:url" content="https://test.atomgit.net/blog/2024/08/05/%E9%80%90%E6%A2%A6%E4%B9%8B%E6%97%85%EF%BC%9A%E6%88%91%E6%A2%A6%E6%83%B3%E5%90%AF%E8%88%AA%E7%9A%84%E6%B8%AF%E6%B9%BE%EF%BC%8C%E6%88%91%E6%88%90%E9%95%BF%E7%9A%84%E6%B2%83%E5%9C%9F/index.html">
<meta property="og:site_name" content="Memory&#39;s blog">
<meta property="og:description" content="🍨 记录短暂的实训基地里的日子，回忆那些值得铭记的瞬间">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://test.atomgit.net/blog/img/artical/wing20240729.jpg">
<meta property="article:published_time" content="2024-08-05T01:11:41.000Z">
<meta property="article:modified_time" content="2024-11-24T14:38:59.000Z">
<meta property="article:author" content="Memory">
<meta property="article:tag" content="日记">
<meta property="article:tag" content="实训">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://test.atomgit.net/blog/img/artical/wing20240729.jpg">
  
  
  
  <title>逐梦之旅：我梦想启航的港湾，也是我成长的沃土 - Memory&#39;s blog</title>

  <link  rel="stylesheet" href="https://lib.baomitu.com/twitter-bootstrap/4.6.1/css/bootstrap.min.css" />



  <link  rel="stylesheet" href="https://lib.baomitu.com/github-markdown-css/4.0.0/github-markdown.min.css" />

  <link  rel="stylesheet" href="https://lib.baomitu.com/hint.css/2.7.0/hint.min.css" />

  <link  rel="stylesheet" href="https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.css" />



<!-- 主题依赖的图标库，不要自行修改 -->
<!-- Do not modify the link that theme dependent icons -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_hj8rtnfg7um.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_lbnruvf0jn.css">


<link  rel="stylesheet" href="/blog/css/main.css" />


  <link id="highlight-css" rel="stylesheet" href="/blog/css/highlight.css" />
  
    <link id="highlight-css-dark" rel="stylesheet" href="/blog/css/highlight-dark.css" />
  



  
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">



  <script id="fluid-configs">
    var Fluid = window.Fluid || {};
    Fluid.ctx = Object.assign({}, Fluid.ctx)
    var CONFIG = {"hostname":"test.atomgit.net","root":"/blog/","version":"1.9.4","typing":{"enable":true,"typeSpeed":100,"cursorChar":"_","loop":false,"scope":[]},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"left","visible":"hover","icon":""},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"code_language":{"enable":true,"default":"TEXT"},"copy_btn":true,"image_caption":{"enable":true},"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"placement":"right","headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":0},"lazyload":{"enable":false,"loading_img":"/img/loading.gif","onlypost":false,"offset_factor":2},"web_analytics":{"enable":true,"follow_dnt":true,"baidu":null,"google":null,"gtag":null,"tencent":{"sid":null,"cid":null},"woyaola":null,"cnzz":null,"leancloud":{"appId":"T1hUHH9Ks1ggG9DBE3HgUPpV-gzGzoHsz","appKey":"XFkgzzvzNo3J3uNCbBiSOFKc","server_url":"https://t1huhh9k.lc-cn-n1-shared.com","path":"window.location.pathname","ignore_local":false}},"search_path":"/blog/local-search.xml"};

    if (CONFIG.web_analytics.follow_dnt) {
      var dntVal = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
      Fluid.ctx.dnt = dntVal && (dntVal.startsWith('1') || dntVal.startsWith('yes') || dntVal.startsWith('on'));
    }
  </script>
  <script  src="/blog/js/utils.js" ></script>
  <script  src="/blog/js/color-schema.js" ></script>
  

  

  

  

  

  

  

  



  
<meta name="generator" content="Hexo 5.4.2"></head>

<body>
  

  <header>
    <!-- 博客 - 导航栏上方 -->


<div class="header-inner" style="height: 100vh">
  <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand" href="/blog/">
      <strong>Memory&#39;s blog</strong>
    </a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/blog/">
                <i class="iconfont icon-home-fill"></i>
                <span>首页</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/blog/archives/">
                <i class="iconfont icon-archive-fill"></i>
                <span>归档</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/blog/categories/">
                <i class="iconfont icon-category-fill"></i>
                <span>分类</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/blog/tags/">
                <i class="iconfont icon-tags-fill"></i>
                <span>标签</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/blog/about/">
                <i class="iconfont icon-user-fill"></i>
                <span>关于</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/blog/links/">
                <i class="iconfont icon-link-fill"></i>
                <span>友链</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/blog/playlist/">
                <i class="iconfont icon-music"></i>
                <span>音乐</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/blog/Memos/">
                <i class="iconfont icon-comment "></i>
                <span>说说</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/blog/App/">
                <i class="iconfont icon-mobile"></i>
                <span>咫尺</span>
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" target="_self" href="javascript:;" role="button"
                 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                <i class="iconfont icon-books"></i>
                <span>青简</span>
              </a>
              <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                
                  
                  
                  
                  <a class="dropdown-item" target="_blank" rel="noopener" href="http://47.93.135.62:5230/explore">
                    <i class="iconfont icon-images"></i>
                    <span>碎念微光</span>
                  </a>
                
                  
                  
                  
                  <a class="dropdown-item" href="/blog/New/">
                    <i class="iconfont icon-bug"></i>
                    <span>匠册详析</span>
                  </a>
                
                  
                  
                  
                  <a class="dropdown-item" href="/blog/New/">
                    <i class="iconfont icon-xbox-fill"></i>
                    <span>窗景新编</span>
                  </a>
                
                  
                  
                  
                  <a class="dropdown-item" href="/blog/New/">
                    <i class="iconfont icon-steam"></i>
                    <span>戏码幕后</span>
                  </a>
                
                  
                  
                  
                  <a class="dropdown-item" href="/blog/New/">
                    <i class="iconfont icon-map"></i>
                    <span>他山随拾</span>
                  </a>
                
              </div>
            </li>
          
        
        
            <li class="nav-item" id="search-btn">
                <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalNotice" aria-label="Search">
                    <i class="iconfont icon-book"></i>
                    <span>公告</span>
                </a>
            </li>
            
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search">
              <i class="iconfont icon-search"></i>
            </a>
          </li>
          
        
        
          <li class="nav-item" id="color-toggle-btn">
            <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle">
              <i class="iconfont icon-dark" id="color-toggle-icon"></i>
            </a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>
 
<div id="banner" class="banner" parallax=true
     style="background: url('/blog/img/artical/wing20240729.jpg') no-repeat center center; background-size: cover;">
  <div class="full-bg-img">

    <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
      <div class="banner-text text-center fade-in-up">

        <div class="h2">
          
            <span id="subtitle" data-typed-text="逐梦之旅：我梦想启航的港湾，也是我成长的沃土"></span>
          
        </div>


        
          <!-- 文章页面 - 顶部信息 -->

<div class="mt-3">
  
  <span class="post-meta mr-2">
    <i class="iconfont icon-author" aria-hidden="true"></i>
    Memory
  </span>
   
  <span class="post-meta">
    <i class="iconfont icon-date-fill" aria-hidden="true"></i>
    <time datetime="2024-08-05 09:11" pubdate>
      2024年8月5日 上午
    </time>
  </span>
  
</div>

<div class="mt-1">
  
  <span class="post-meta mr-2">
    <i class="iconfont icon-chart"></i>
     21k 字 
  </span>
   
  <span class="post-meta mr-2">
    <i class="iconfont icon-clock-fill"></i>
       54 分钟 
  </span>
     
  <span
    id="leancloud-page-views-container"
    class="post-meta"
    style="display: none"
  >
    <i class="iconfont icon-eye" aria-hidden="true"></i>
    <span id="leancloud-page-views"></span> 次
  </span>

    
</div>


        

        <!-- 添加网站运行时间 -->
        <div class="footer-content" style="background-color: transparent;">
          <div>
            <span id="timeDate"></span>
            <span id="times"></span>
            <script>
            var now = new Date();
            function createtime(){
                var grt= new Date("03/07/2023 00:00:00");//此处修改你的建站时间或者网站上线时间
                now.setTime(now.getTime()+250);
                days = (now - grt ) / 1000 / 60 / 60 / 24;
                dnum = Math.floor(days);
                hours = (now - grt ) / 1000 / 60 / 60 - (24 * dnum);
                hnum = Math.floor(hours);
                if(String(hnum).length ==1 ){
                    hnum = "0" + hnum;
                }
                minutes = (now - grt ) / 1000 /60 - (24 * 60 * dnum) - (60 * hnum);
                mnum = Math.floor(minutes);
                if(String(mnum).length ==1 ){
                          mnum = "0" + mnum;
                }
                seconds = (now - grt ) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum);
                snum = Math.round(seconds);
                if(String(snum).length ==1 ){
                          snum = "0" + snum;
                }
                document.getElementById("timeDate").innerHTML = "🚀 &nbsp"+dnum+"&nbsp天";  //此次自定义显示内容
                document.getElementById("times").innerHTML = hnum + "&nbsp小时&nbsp" + mnum + "&nbsp分&nbsp" + snum + "&nbsp秒";
            }  

            if (!window.location.href.includes('/20')) {  
            setInterval("createtime()", 250);  // 只有当URL不包含'specific-page'时，才调用createtime  
            }//此次自定义显示内容
            </script>
          </div>
        </div>

      </div>
      
        <div class="scroll-down-bar">
          <i class="iconfont icon-arrowdown"></i>
        </div>
      
    </div>
  </div>
</div>

</div>

  </header>

  <main>
    
      <!-- 文章页  -->


<div class="container-fluid nopadding-x">

  <div class="row nomargin-x">
    <div class="side-col d-none d-lg-block col-lg-2">
      
  <aside class="sidebar category-bar" style="margin-right: -1rem">
    <!-- 文章页面 - 左边栏所属分类 -->
  

<!-- 文章页 - 文章分类 -->





<div class="category-list">
  
  
    
    
    
    <div class="category row nomargin-x">
      <a class="category-item 
          list-group-item category-item-action col-10 col-md-11 col-xm-11" title="职路星火"
        id="heading-59c550454d1ecf67a2ead26a1c46d14b" role="tab" data-toggle="collapse" href="#collapse-59c550454d1ecf67a2ead26a1c46d14b"
        aria-expanded="true"
      >
        职路星火
        <span class="list-group-count">(5)</span>
        <i class="iconfont icon-arrowright"></i>
      </a>
      
      <div class="category-collapse collapse show" id="collapse-59c550454d1ecf67a2ead26a1c46d14b"
           role="tabpanel" aria-labelledby="heading-59c550454d1ecf67a2ead26a1c46d14b">
        
        
          
          
  <div class="category-post-list">
    
    
      
      
        <a href="/blog/2023/10/27/%E8%81%8C%E4%B8%9A%E7%94%9F%E6%B6%AF%E8%A7%84%E5%88%92/" title="职业生涯规划"
           class="list-group-item list-group-item-action
           ">
          <span class="category-post">职业生涯规划</span>
        </a>
      
    
      
      
        <a href="/blog/2023/11/18/%E5%80%BE%E8%AF%89%E5%BF%83%E5%A3%B0%EF%BC%8C%E6%B2%9F%E9%80%9A%E4%B9%8B%E9%81%93%EF%BC%9A%E4%BA%BA%E9%99%85%E4%BA%A4%E5%BE%80%E4%B8%AD%E7%9A%84%E8%A1%A8%E8%BE%BE%E6%8A%80%E5%B7%A7/" title="倾诉心声，沟通之道：人际交往中的表达技巧"
           class="list-group-item list-group-item-action
           ">
          <span class="category-post">倾诉心声，沟通之道：人际交往中的表达技巧</span>
        </a>
      
    
      
      
        <a href="/blog/2024/05/27/%E5%B7%A7%E8%88%8C%E5%A6%82%E7%B0%A7%EF%BC%9A%E6%B1%82%E8%81%8C%E9%9D%A2%E8%AF%95%E4%B8%AD%E7%9A%84%E6%B2%9F%E9%80%9A%E6%8A%80%E5%B7%A7%E4%B8%8E%E6%99%BA%E6%85%A7/" title="巧舌如簧：求职面试中的沟通技巧与智慧"
           class="list-group-item list-group-item-action
           ">
          <span class="category-post">巧舌如簧：求职面试中的沟通技巧与智慧</span>
        </a>
      
    
      
      
        <a href="/blog/2024/08/05/%E9%80%90%E6%A2%A6%E4%B9%8B%E6%97%85%EF%BC%9A%E6%88%91%E6%A2%A6%E6%83%B3%E5%90%AF%E8%88%AA%E7%9A%84%E6%B8%AF%E6%B9%BE%EF%BC%8C%E6%88%91%E6%88%90%E9%95%BF%E7%9A%84%E6%B2%83%E5%9C%9F/" title="逐梦之旅：我梦想启航的港湾，也是我成长的沃土"
           class="list-group-item list-group-item-action
           active">
          <span class="category-post">逐梦之旅：我梦想启航的港湾，也是我成长的沃土</span>
        </a>
      
    
  </div>

          
  
    
    
    
    <div class="category-sub row nomargin-x">
      <a class="category-subitem collapsed
          list-group-item category-item-action col-10 col-md-11 col-xm-11" title="旧梦轻拾"
        id="heading-f768689621e1a81f9a71173c1017338e" role="tab" data-toggle="collapse" href="#collapse-f768689621e1a81f9a71173c1017338e"
        aria-expanded="false"
      >
        旧梦轻拾
        <span class="list-group-count">(1)</span>
        <i class="iconfont icon-arrowright"></i>
      </a>
      
      <div class="category-collapse collapse " id="collapse-f768689621e1a81f9a71173c1017338e"
           role="tabpanel" aria-labelledby="heading-f768689621e1a81f9a71173c1017338e">
        
        
          
  <div class="category-post-list">
    
    
      
      
        <a href="/blog/2024/05/17/%E5%AE%9E%E4%B9%A0%E4%B9%8B%E6%97%85%EF%BC%8C%E6%97%B6%E5%85%89%E6%B5%81%E8%BD%AC%EF%BC%9A%E5%9C%A8%E9%9D%99%E8%B0%A7%E4%B8%AD%E8%81%86%E5%90%AC%E6%88%90%E9%95%BF%E7%9A%84%E5%9B%9E%E5%93%8D/" title="青涩初航：在静谧中聆听成长的回响"
           class="list-group-item list-group-item-action
           ">
          <span class="category-post">青涩初航：在静谧中聆听成长的回响</span>
        </a>
      
    
  </div>

        
      </div>
    </div>
  
        
      </div>
    </div>
  
</div>

  </aside>


    </div>

    <div class="col-lg-8 nopadding-x-md">
      <div class="container nopadding-x-md" id="board-ctn">
        <div id="board">
          <article class="post-content mx-auto">
            <!-- SEO header -->
            <h1 style="display: none">逐梦之旅：我梦想启航的港湾，也是我成长的沃土</h1>
            
              <p class="note note-success">
                
                  
                    本文最后更新于：1 年前
                  
                
              </p>
            
            
              <div class="markdown-body">
                
                <h1 id="写在前面"><a href="#写在前面" class="headerlink" title="写在前面"></a>写在前面</h1><blockquote>
<p>2024 年 8 月 6 日</p>
</blockquote>
<p>八月四日早上九点半，我哥相跟着我来到了这所校园。</p>
<p>暑假生活仅仅过去了一半，我却迫于大四升学和繁重的学业压力，不得不在这样燥热的天气中来到这里上学。</p>
<p>昨天是在这里生活的第一天，感觉很一般，这里度过的每一寸时光都远远没有假期生活里的日子精彩。</p>
<p>我在小马村生活了四个月，在实习期间也想过很多次下半年的安排以及规划，然而每次思索的结果都是一脸茫然。</p>
<p>每天繁重的工作压力已经让我感觉有些喘不过气来，我几乎无暇考虑工作之外的任何事情，更不知道后半年将要何去何从。</p>
<p>我尝试培养更多的兴趣爱好去充实我自己的生活，写作，绘画，唱歌，陶笛，象棋。</p>
<p>我迫切需要提升自己的幸福生活指数，绝不允许一份无聊的工作影响我的生活质量，我从身边抓取一切能掌控的事务去实现这样的愿景。</p>
<p>我喜欢周六上午一个人躺在床上睡到自然醒，下午吃饱饭美美地睡个午觉不闻窗外事，晚上追剧看电影体验艺术作品里的真情美好。</p>
<p>我喜欢一个人思考，一个人生活，每天都能有新的想法从脑海中蹦出，有新的生活思路记录在个人博客当中。</p>
<p>甚至就连出门买菜回家做饭刷碗的时候，都会觉得很幸福。</p>
<p>太怀恋这四个月的生活了，仿佛过去几个月的时光就像是一场梦。</p>
<p>梦醒了，我终究要面对独居生活已然结束的事实，我要跟在假期里朝夕相处的好兄弟说再见了。</p>
<p>祝好，希望我能每天开心快乐。</p>
<p>至少每天都能捕捉到哪怕只有一个快乐瞬间，那样也足够了。</p>
<h1 id="平静的日子"><a href="#平静的日子" class="headerlink" title="平静的日子"></a>平静的日子</h1><h2 id="开班仪式"><a href="#开班仪式" class="headerlink" title="开班仪式"></a>开班仪式</h2><blockquote>
<p>2024 年 8 月 4 日</p>
</blockquote>
<p>早上听说学校的早饭是六块钱自助，竟规定只能拿一个鸡蛋，太坑了只好是相跟上曹老板去校门口吃一顿油条豆腐脑。</p>
<p>来到教室连上 WIFI，班主任拉人进实训班级群聊，下载钉钉进入腾讯会议。</p>
<p><img src="http://blog.memory-life.xyz/image-20240805091305711.png" alt="image-20240805091305711"></p>
<p><img src="http://blog.memory-life.xyz/image-20240805091328626.png" alt="image-20240805091328626"></p>
<p>早上九点开始到十一点五十，下午一点半到五点半，六点半到八点半上晚自习（周一到周五），教室最晚开放到十点半（周一到周四）。</p>
<p>周六日不上课，呜呼呼呼。</p>
<p><img src="http://blog.memory-life.xyz/image-20240805092638368.png" alt="image-20240805092638368"></p>
<p>这学习环境和条件都挺不错，比我那小公司可强太多了。</p>
<p>呆在这里有点难受，坐在这里感觉一整个教室的都是窝囊废，规则管理条例还不少，简直是印象中培训班的最低标配。</p>
<p>还特么审批流程是当日的授课老师和项目经理，根据授课的重要程度做审核，附自己和家长的身份证复印件，还特么通报行程给家长。</p>
<p>学你妈妈算法，这婆娘逼逼赖赖根本看不进去的。</p>
<p>十点多出去上个厕所，这老师讲话没有什么营养，这个阶段竟然还有老师在课堂上讲授专业前景和岗位介绍，现在学生普遍水平差太多。</p>
<p>上课期间做了十道算法题目，又巩固复习了 RabbitMQ 相关知识点，这部分没有实战经历还是挺尴尬的，有机会一定要写点 Demo 功能。</p>
<p>下午提前一点半上课，还搞什么三分钟自信演讲，难不倒我的。</p>
<p>简单回顾下 Spring Boot 项目开发模板，久违地又找到曾经熟悉的写代码的感觉，自己写一个简单的项目再巩固下开发流程吧。</p>
<h2 id="网络安全"><a href="#网络安全" class="headerlink" title="网络安全"></a>网络安全</h2><blockquote>
<p>2024 年 8 月 12 日</p>
</blockquote>
<p>今天是实训生活的第二周，上午班级里有个信息与网络安全的技术分享讲座，妈的这基地学的这么杂。</p>
<p><img src="http://blog.memory-life.xyz/image-20240812091027331.png" alt="image-20240812091027331"></p>
<p><a target="_blank" rel="noopener" href="https://www.yuque.com/pharaohsec/bypy5u/zcmvoftgo5liqcvr?singleDoc#">https://www.yuque.com/pharaohsec/bypy5u/zcmvoftgo5liqcvr?singleDoc#</a> 《【Note】XMR 揭密》 密码：gcav</p>
<p><img src="http://blog.memory-life.xyz/image-20240812100918244.png" alt="image-20240812100918244"></p>
<h2 id="复习计划"><a href="#复习计划" class="headerlink" title="复习计划"></a>复习计划</h2><blockquote>
<p>2024 年 8 月 11 日</p>
</blockquote>
<p>今晚没有去学校，明天早点起直接打车子去。</p>
<p>罗列下我的学习计划，面向简历学习：</p>
<ol>
<li>Java 基础：熟练掌握基础语法、常用数据结构和集合类，深入理解并实践异常处理、反射、IO、泛型等语言特性。</li>
<li>开发框架：熟悉 SSM + Spring Boot + Vue / React 开发模式，开发经验丰富，深刻理解 Bean 的生命周期、IOC 和 AOP 等核心技术。</li>
<li>数据库：熟练掌握 MySQL，对其锁机制、索引、事务、隔离级别有一定的理解，能够熟练编写常用的 SQL 语句以及简单的 SQL 优化。</li>
<li>缓存：Redis 使用经验丰富，掌握 Redis 基本数据结构和持久化机制，实践过 Redis 分布式缓存、基于 Redisson 的分布式锁和限流。</li>
<li>并发编程：具备并发编程经验，熟练使用 CompletableFuture 等 JUC 类，能够自定义线程池实现并发操作和异步化。</li>
<li>JVM：熟悉 JVM 内存模型、垃圾回收机制、Java 类生命周期和类加载机制，对 Java 类加载器特别是双亲委派模型有深入理解。</li>
<li>设计模式：熟悉多种设计模式，如单例模式、门面模式、适配器模式和注册器模式，能够根据实际需求灵活运用设计模式。</li>
<li>中间件：熟悉微服务治理原则，熟悉并实践运用 Nacos、OpenFeign、Dubbo、Spring Cloud Gateway、Docker、Elasticsearch 等。</li>
<li>其他：熟悉 Linux 操作系统，有丰富的项目部署和静态站点搭建经验，掌握 C++、Python、JavaScript 等编程语言，具备跨语言能力。</li>
<li>负责电子名片项目的数据校验核对和接口开发，实现并优化名片管理系统的查询接口，支持名片的创建、编辑与管理。</li>
<li>参与学习并应用企业版后端项目模板，开发业务代码自动生成工具，提升开发效率与代码质量。</li>
<li>熟练运用 Git 进行版本管理，在禅道积极提交并跟踪 Bug，配合团队内部开发人员协同解决并验收，完成自测整改计划。</li>
<li>利用 Swagger 自动生成 API 文档方便开发人员调试，采用 Docker 容器化技术，实现快速便捷的项目部署。</li>
<li>定制 Spring Boot 初始化模板，包括全局请求响应拦截、全局异常处理、Swagger + Knife4j 接口文档生成、跨域支持及多环境配置等核心功能。</li>
<li>自主设计获取随机壁纸、随机生成诗词等多样化接口服务，涵盖多种应用场景和需求，并提供有详尽的接口文档方便开发者快速集成。</li>
<li>使用 Spring Cloud Gateway 实现微服务网关，统一流量入口，实现聚合文档、路由转发、统一认证授权和请求限制，确保接口稳定性。</li>
<li>自主实现 API 签名认证，为每个注册用户分配唯一密钥对（accessKey 和 secretKey）。</li>
<li>用户请求时须附带密钥，服务端通过 SHA256 算法生成签 名并验证，确保请求来源合法且数据完整。</li>
<li>利用 Maven 聚合工程和自动化构建功能，根据业务逻辑和职责将原有单体应用拆分为多个独立的模块，实现微服务架构转型。</li>
<li>使用 Dubbo RPC 框架抽取和优化公共服务，避免引入复杂的业务逻辑以确保网关职责单一性，实现了网关模块的轻量化和服务间解耦。</li>
<li>应用 Spring Boot 的自动配置机制，自主设计客户端 SDK 实现高效的接口调用，大幅简化平台接入流程和开发效率。</li>
<li>主要工作 通过 Spring AOP 切面编程和自定义注解抽象公共服务，对方法执行前后进行统一处理，实现权限校验和全局请求拦截，并进一步简化日志管理。</li>
<li>配置定时任务，使用 Hutool 和 gson 获取外源热榜博文 id，并使用 jsoup 实时抓取文章数据，利用 CSS Selector 解析 HTML 并入库。</li>
<li>深入学习 Elastic Stack 技术，掌握 Elasticsearch 的倒排索引和分词机制， 能够使用查询 DSL 语言编写复杂的搜索条件，成功规划并实施关键词语 高亮、搜索词条建议以及热门话题分析等特性。</li>
<li>通过适配器模式封装数据源接口，结合门面模式实现搜索结果聚合，利用注册器模式动态切换聚合搜索服务，显著简化前后端开发和调用过程。</li>
<li>自主搭建 Logstash 数据同步管道并掌握其相关配置和优化，实现定时同步 MySQL 的变更数据记录到 ES，具备丰富的数据同步实战经验。</li>
<li>使用 Jsoup 库从外部网站抓取大量诗词数据，并使用 CompletableFuture 异步编程大幅减少数据库批量插入的等待时间，性能提升近 70%。</li>
<li>开发经验：有丰富的 Java 开发实践经验，熟悉云服务器环境操作，具备一定的项目部署维护及故障快速诊断解决能力。</li>
<li>博文积累：热爱编程，坚持每日记录编程学习生活中的相关经验、学习技巧以及踩坑经历，在个人博客累计输出八十余篇博文，内容覆盖面广泛：从 编程细节到生活点滴、从代码调试到问题解决、从算法思考到人生规划，总计一千余张图片、七十余万文字。</li>
<li>技术追踪：对新技术永远保持好奇心，热衷于在开源中国、稀土掘金、Github 等技术社区学习前沿技术，追踪互联网行业的最新动态。</li>
</ol>
<p><a target="_blank" rel="noopener" href="https://gitee.com/SnailClimb/awesome-idea">awesome-idea: IntelliJ IDEA 使用指南 | 必备插件推荐 | 插件开发入门 | 重构小技巧 | 源码阅读技巧。 (gitee.com)</a></p>
<h2 id="过去的生活"><a href="#过去的生活" class="headerlink" title="过去的生活"></a>过去的生活</h2><h2 id="初来乍到"><a href="#初来乍到" class="headerlink" title="初来乍到"></a>初来乍到</h2><blockquote>
<p>2024 年 8 月 19 日</p>
</blockquote>
<p>来到这里已经整整两周了，对这两周以来的生活几乎没有什么记录，正好借此机会好好聊一聊近段时间的学习生活。</p>
<p>今天早上七点半我又一次跟我的兄弟分别，独自一人下楼打车去到晋中榆次，我实在不想离开那个家，也不想一次次重复着别离。</p>
<p>上周周五放学后，我在校门口买了两个土豆丝烧饼，叫了辆出租车子二十五分钟就回到了大昌宾馆。</p>
<p>出发之前还跟两个路过的大娘聊了一会儿，听她们说过几周开学后这校区还会招收高中生的，那会儿餐厅会更加拥挤的。</p>
<p>我走在小马村那熟悉的回家路上，过去四个多月以来我一直都很喜欢走这条路，这条回家的路总是能让我心情向好。</p>
<p>好兄弟刚刚买了火锅丸子回家，要是我提早五分钟能到的话就能在街上看见他了，只好在路过的超市买了一瓶可乐，回家。</p>
<p>几乎是一路小跑着上楼，我兴奋极了，简直按捺不住内心的激动要和我兄弟见面。</p>
<p>门敞开着，就好像专门迎接我一般，我蹑手蹑脚进了门，就立刻滔滔不绝地同正在厨房洗碗的好兄弟讲起话来，聊聊这周有什么新鲜事。</p>
<p>我们吃了火锅，喝了饮料，嘴上一直不停歇地讲着话，仿佛仅仅五天的别离就已经让思念的情感激扬纷飞起来。</p>
<p>是啊，我这五天经历了很多事情，第一周周五的执念，在我的不懈努力之下也终于在到家的三小时之前彻底解决。</p>
<p>下午三点左右，巩老师和崔老师叫走我们班学习进度稍快的同学，一起来会议室开会商讨事宜，即自下周起我们都被安排到了快班。</p>
<p>这是我一周以来争取的结果。</p>
<p>遥想八月四号上午，我和好兄弟一块儿提着大包小裹打车来到这里，匆匆分别后独留我一人在这陌生的环境里，真的不太喜欢这个校园。</p>
<p>那天中午睡了一觉，好兄弟的平板和电话卡也刚好到了家，但愿他跟我一样也睡了一个好觉。</p>
<p>那天下午戴上耳机听着音乐，听着那刚刚逝去的快乐假期里我俩经常一块儿听的音乐，内心的情感终于在那一刻爆发出来。</p>
<p>我舍不得我的兄弟，不舍得离开那个我生活了四个月的家。</p>
<p>当时我几乎是抱着此生都不会回到小马村的念头，已经下定决心要独自一人在这里闯荡，不知道今年过年前还能不能见到我的兄弟。</p>
<p>那天晚上也还是很安静的，宿舍环境不错很凉快也很安静，尽管大家互相不认识，但比起前三年的住宿环境我更喜欢这里。</p>
<p>八月五号那天是第一天上课，上午做了简短的开办仪式，老师给我们简单介绍了下校园概况和基地规划，开始了第一堂课。</p>
<p>下午竟然是课前演讲，我是名单上的第二个。</p>
<p>那堂课一共上台八个人，半个小时的自信演讲环节，我一个人独占二十五分钟。</p>
<p>当时我站在讲台上，两手插兜，在七十多号同学的注视下滔滔不绝地聊了将近半个小时，说完了我的实习经历，租房经历以及这半年以来的思考感悟和成长。</p>
<p>言辞恳切，沉稳冷静，基础扎实，第一堂课我就让全班同学和老师记住了我，我当然也不会想到，将来整个学校的老师也都会知道我的名字。</p>
<p>那天过后，我心里平静又兴奋，十几年的读书生涯里，从未有过像现在这样万众瞩目的时刻，这是我今年以来最大的突破。</p>
<p>四号那天晚上在宿舍门前刷脸，六号早上又在教学楼门前刷脸，七号早上我们一整个班级在操场上还站好队，拍了唯一一张集体照。</p>
<p>第一周的学习生活让我很不适应，课堂上教学内容的脱轨，人多嘴杂的教学环境，都让我感觉很不自在。</p>
<p>从第一天开始就没有上过晚自习，五点半到点背起书包就走，校外买两个饼直接回宿舍躺着，一天难得有这么清闲的时间能自己一个人呆会儿，</p>
<p>我和曹老板一直坐在班里的第一排角落里，尽管有过一次和一帆、小赵他们坐过一次，但也仅仅只有一次，我们几个互相之间还不太熟。</p>
<p>第一周周四下午，看到班里转来一位考公的同学，再想起前两天隔壁石老师谈到的教学规划，我越发难以忍受这样的学习环境了。</p>
<p>我要转班，转到隔壁考研班去自习，当天晚上就提前了解了考研班的作息时间。</p>
<p>然而周五早上我发给了巩老师第一份完善的简历后，想要当面聊聊却被告知她不在学校，问我能否下周一再聊聊，我只能答应。</p>
<p>那天下午就没有什么负担了，五点半下课前老师们都在开会，我硬着头皮学了俩小时，记录了暑假里去晋阳湖的那一天，很快就熬到放学了。</p>
<p>我在校门口打了车子，十八分钟就直接到了小马村，在申通快递的那条街见到了我的兄弟，他带着我买了火锅丸子和饺子。</p>
<p>那天晚上我俩吃到了最美味的一顿火锅，从下午六点多不停歇一直说到了晚上两点多，意料之外的重逢让我俩都很兴奋。</p>
<p>我把这一周以来的好多趣事都讲给我兄弟听，他也很高兴，周六和周日那两天我们也都聊到了小时候六一儿童节那会儿，都在表演些什么精彩的节目。</p>
<p>周日那天准备好晚八点多起身下楼打车返校的，吃了我兄弟给我做的最后一顿断头饭后，我突然决定不走了，明天一早再起身也不迟。</p>
<p>我俩即刻兴奋起来，从七点半多打王者到晚上快九点，又玩了前一天晚上下载的猫和老鼠，狂野飙车，只可惜我兄弟的平板不太适合打游戏。</p>
<p>快乐的一个晚上很快过去了，我们沉沉睡去。</p>
<p>第二天早上六点半醒来，好兄弟给我泡了一碗馄饨汤，就着几片饼干下肚，七点多我下了楼打车去学校，我又一次面临要跟我的兄弟分别。</p>
<p>只是我不会想到，这周一整周的时间里都会因为我要求转班这事，促成很多之前不敢想像的事情。</p>
<p><strong>第二周的生活，也是我此生最快活的生活，开始了。</strong></p>
<p>重要的人越来越少，剩下的人越来越重要。</p>
<p>自从本月初开学报到以来，身边就一直在发生着很多新鲜事，仅仅在刚刚逝去的短短两周时光里，我品尝到了生命里最宝贵的东西。</p>
<p>我遇到了同曾经的我一样积极进取的同学，他们是我在这个陌生校园环境里可以互相慰藉的益友，也将是我生命里最要好的朋友。</p>
<p><strong>于我而言，这无疑是莫大的幸运。</strong></p>
<p>在我过去十几年平淡的学习生涯中，见过好多亲密无间的小情侣们腻歪在一块，但一帆和小赵是我见过最特别的。</p>
<p><strong>那天下午晚饭后我抽出时间约他们俩出来，一块儿迎着徐徐微风和斑驳夕阳坐在操场草地中央，一直畅聊到深夜里的皎皎月光洒满整个校园。</strong></p>
<p>三年多的相处时间能足够了解对方的性格谈吐以及生活习惯，尽管在朝夕相处间总会发现伴侣身上的缺点亦或是不完美，但双方的互相包容和尊重却又让彼此的心灵更加贴近。</p>
<p>他们两位简直般配。</p>
<h2 id="忙碌"><a href="#忙碌" class="headerlink" title="忙碌"></a>忙碌</h2><blockquote>
<p>2024 年 9 月 7 日</p>
</blockquote>
<p>时间一晃而过，眨眼间开学就一个多月了，我本来想着每周都坚持回过头来记录下生活，可最近实在没什么精力。</p>
<p>前两天我觉定重启人生回忆录中的相片记录生活，把实训生活里的点点滴滴用照片的形式记录下来。</p>
<p><strong>当然了，暑假时期里缺失的那部分生活，也会慢慢整理起来。</strong></p>
<p>那么既然如此，这个栏目下也不必把事事都记录得相当精细，简单回忆下这三周的生活吧，真是忙碌中又充满着惊喜和希望。</p>
<p>第二周结束以后，周五下午我第二次打车跑回家去，回到那熟悉又陌生的小马村里，上了八楼打开房门，还是一眼就看到了我兄弟。</p>
<p>他跟平时一样洗菜做饭，刚才下楼买了火锅丸子和配料，等着今晚跟我一块大快朵颐呢。</p>
<p>刚进门的我就再次滔滔不绝起来，给好兄弟讲讲这两周都发生了什么好玩的事情，认识了几个新朋友。</p>
<p>这次回家当然是很开心了，下次回家就是二十二号，那会儿周三晚我就请假回家，第二天陪我兄弟一块儿回村里去。</p>
<p>十九号的那天早上是真的不想离开家，不想再经历离别的苦楚了。</p>
<p>第三周的生活开始了。</p>
<p>上周周五下午，我凭借一己之力给巩老师打过两个电话，老师们讨论了三天终于做出了这样的决定：</p>
<p>把班内学习进度比较超前的同学单独划分出来，跟街对面公司那边的一个快班合并起来，统一整体的教学进度。</p>
<p>周一上午我就到了新教室，项目五，整间教室就只有九个同学，安静得很。</p>
<p>暂时回忆不起来那周发生了哪些故事，现在回想起来只觉得时间过得好快，明明仿佛是近在眼前的景象，竟然已经是三周前的画面了吗。</p>
<p>只记得刚刚搬到新教室的我，感觉身边缺失了什么东西，但又好像多了什么东西。</p>
<p>上周周三晚，我主动找一帆、小赵在操场聊天后，我们几位就经常有事没事都聚一块聊聊天，那可是难得的闲暇时光啊。</p>
<p>尽管我不跟他们在一块儿学习了，他们也还会专程来找到我，给我送面膜、火龙果、小零食什么的。</p>
<p>记忆里的那周很短暂，因为周四我不得不赶回村里奔丧的缘故，周三下午我就打车先回了小马村，在这里住最后一晚。</p>
<p>周五的时候，公司那边的班级就整体搬迁到这边教室，杨老师也跟着他们一块儿来了，教室里变得越发热闹但嘈杂起来。</p>
<p>周四下午回家，我大哥还出了车祸；周五到周日连续三天的吊唁以及披麻戴孝，把我们折腾得够呛，周日我俩就坐火车回了太原。</p>
<p><strong>那天下午，究竟是怀着怎样的心情背上行囊离开家的，我自己也说不清楚。</strong></p>
<p>整整半年没有回家了，这次回来尽管只是呆了加起来还不到一天的时间，但能看到小卧室的模样、听到妈妈的声音就已经心满意足了。</p>
<p>那天下午五点半出了太原南站，六点多那会儿突然下起暴雨，估计是今年最后也是最大的一场雨。</p>
<p>我俩冒着雨打到车子，二十分钟左右就回了小马村。</p>
<p>小马村，嘿嘿，我还以为上周四离开以后就再也回不来了呢，真是计划赶不上变化，又回到了这地方。</p>
<p>当天晚上我俩玩得很尽兴，也是最后一晚上呆在这里了，以后都不会再有机会，真的是最后一次了。</p>
<p>第二天我兄弟下楼去买了饺子，火锅丸子，啤酒饮料，还帮我打印了贫困补助申请表，我们又红火了整整一晚上。</p>
<p>八月二十六号早上，周二上午七点多，我兄弟陪我下了楼，在车水马龙的街头送我最后一程。</p>
<p>大昌宾馆的街头啊，自我三月下旬第一次来到这里租房，到现在已经过去了五个多月，五个月的时间过的真快啊。</p>
<p>不一会儿车子就来了，我赶忙提上行李包裹上了车，剩下我兄弟一个人站在那个街头，张望着路边我坐的车子直到我离开他的视线。</p>
<p>他回家去了，在那里呆上四天，把所有的东西都打包利索后，在周六上午把房间钥匙和门禁卡都留给了阿姨。</p>
<p>我的小马租房生涯，结束了。</p>
<p>第四周开启后，我所在的班级进度比较快，这里已经把框架基本知识讲解完毕，从周五开始做项目，一直到第五周周日结束。</p>
<p>所以这两周的生活是很索然无味的，当然仅限于课程学习上。</p>
<p>还记得第三周周三上午，那天我约到了美团 AI 面试，早上六点多就起来洗了澡，七点多拎起书包出了宿舍门。</p>
<p>本来计划在外完成面试的，怎奈户外环境实在太差，而且教室门也没开，只能在石板椅上坐下来，学到快八点半那会儿才去了教室。</p>
<p>十点多我回了宿舍参加面试，今年秋天第一次参加面试很慌张的，全然没了上那样的从容，不过我很快吸取了教训。</p>
<p>那天晚上我就回了小马，第二天陪同我兄弟乘火车回到了阔别已久的家乡。</p>
<p>在家的那几天也没闲着，了解到简历优化方向，每天持续巩固和投递简历，即使在最艰难的时候也没有忘记学习。</p>
<p>我始终明确自己正在走向一条怎样的道路，不论结果如何我都必须要将这一切贯彻到底。</p>
<p>撇开身边一切可能影响状态的因素，在这条我选择的路上一往无前，走下去，走到底。</p>
<p>就像我昨天跟巩老师讲过的，我得考虑更加重要的事情了。</p>
<p>我重返校园后，再次见到了阔别已久的一帆、小赵他们，大家在一块儿总能聊到很多新鲜的东西，周五他们还请我去吃小火锅呢。</p>
<p>榆次大商场，小火锅，玩具店，冰淇淋……周五的那个晚上我简直幸福到了极点，从来没有过这样的感觉。</p>
<p>身边从来没有过这样的同学，愿意花时间同我交心做朋友，那天晚上不论是吃火锅还是逛商场，都让我的幸福感拉满了。</p>
<p><strong>那天晚上，在我吃火锅的时候，好兄弟已经把家里收拾的利利索索，并把暂时带不走的家具都寄存在了隔壁树宙家。</strong></p>
<p><strong>那天晚上，在我逛商场的时候，小穆已经坐上了回家的火车，在二十三小时后就能抵达吕梁大地，回到阔别已久的家乡。</strong></p>
<p><strong>我们都有自己的生活轨迹，大家都在努力尝试过好自己的生活。</strong></p>
<p><strong>大家各自忙碌的身影，就像是一个个在这忙碌尘世间努力生活的缩影，就像是生活本身的具象化。</strong></p>
<p>第四周整体来讲是平平淡淡的，更像是过渡时期，不论在秋招求职还是校园教学进度上，都没有什么精彩又亮眼的瞬间值得我回忆的。</p>
<p>第五周，也就是从这周开始，我越来越觉得自己之前所做的努力没有白费了。</p>
<p>周一我找到了新的投递平台，在实习僧，智联招聘，万码优才和牛客网上疯狂投递，曝光量大大增加。</p>
<p>也正是在周二下午，同字节 HR 约了周四上午十一点一面。</p>
<p>周三下午，同苏州大宇宙 HR 打电话沟通，约面周四上午十点半；同时微信沟通两家山东济南的 HR，了解公司背景文化，未约面。</p>
<p>这两天过得很忙碌，但我能明显感觉得到，经过两次面试的我已经变得更加强大，对自己的认知定位也越来越清晰明确。</p>
<p>最重要的还是我昨天下午同巩老师沟通过，她的建议让我感觉醍醐灌顶，谢谢了。</p>
<p>昨天是我的生日嘞，周四早上曹老板请假去运城找同学玩，晚上网吧通宵打游戏，周五中午才回来，睡了整整一下午。</p>
<p>我要出去觅食了，曹老板陪同我一块儿去，正巧在宿舍门口见到了一帆小赵。</p>
<p>他们听说我不打算入职苏州大宇宙的消息后，也是非常开心，大家一块儿去学校附近的那家饭馆吃面条，给我这个寿星攒攒运。</p>
<p>周三晚我在教室里打算记忆八股文，怎奈烦躁得很根本没心思去看，八点多我开始给曹老板将面试技巧，直到晚九点半才说完。</p>
<p>两个人出来回宿舍的路上，看到一帆小赵在踢毽子，俩人玩得相当开心啊。</p>
<p>自上周周五吃完火锅以后，好久没有见过他们了，也就是周二中午那会儿，一帆给我发了他在火锅店拍到的我的帅照。</p>
<p>我又跟两位好朋友聊了会儿，晚上回去准备八股文面试，此刻的我已经不再那么慌张了。</p>
<p>我赢下了两轮面试，在接下来的一个月，两个月甚至是三个月里，我还要继续赢下去的，直到拿到我真正想要的。</p>
<p>这就是这三周的生活了，尽管没有事无巨细而且记录得比较匆忙，但这确实是我能抽出时间来写下的最好的文字记录了。</p>
<p><strong>此刻是九月七号，周六下午，好久没有像这样酣畅淋漓地回顾自己的生活片段了，感觉自己的灵魂更加清明和充满活力。</strong></p>
<p>我不知道应该说些什么，但既然已经祈祷过，努力过，结果就一定不会让我失望。</p>
<p>加油了，剩下的路，靠我自己走下去。</p>
<h2 id="求职，迷茫"><a href="#求职，迷茫" class="headerlink" title="求职，迷茫"></a>求职，迷茫</h2><blockquote>
<p>2024 年 9 月 30 日</p>
</blockquote>
<p>一周前的今天，也就是二十三号下午，心里第一次有了这个计划的雏形。</p>
<p>趁着这次长假，好好打磨下平日里没工夫钻研的技术，或者也可以称之为爱好、兴趣，不过这些都已经无所谓了。</p>
<p>我又有了两种新的想法：</p>
<p><strong>简历投递，约面想法，求职。</strong></p>
<p><strong>持续精进，技术提升，兴趣。</strong></p>
<p>首先是最近两个月一直在关注着的秋招，简历优化，网申投递，面试邀约，做不完的测评和笔试，遥遥无期的 offer……</p>
<p>刚来到这里的前两周周末里还回小马村那边，在家的时候就能静下心来好好优化简历，八月十七号那天晚上第一次做出了两页版简历。</p>
<p>从那天晚上开始，便进入了紧锣密鼓的简历网申投递中去，同时简历迭代的周期也越来越短。</p>
<p>八月二十六号，八月二十九号，九月六号，九月九号，九月十四号，九月十九号，九月二十一号，九月二十二号，九月二十九号……</p>
<p>最终的简历模板已经在昨天晚上定型，目前暂时还没有要继续迭代简历的打算，估计这是最终版，但这会儿谁又能真正说清楚呢。</p>
<p>随着简历迭代趋于完善，网申计划也趋于完善。</p>
<p>自中秋节后以来，每天都保持网申投递至少 30 份简历的节奏，更多的时候一天能投递 80+份简历，这需要花费三四个小时左右的时间。</p>
<p>另外写了一篇文档提炼出网申阶段出现频率较高的填充内容，比如主修课程，校园经历，荣誉，兴趣爱好等，尽最大限度提高网申效率。</p>
<p>邮箱里陆陆续续收到了很多中大厂的测评和笔试邀请函，为了直观回顾秋招投递反馈日程，我设计了简要的 Excel 表格把这些记录下来。</p>
<p>这段时间里的测评和笔试倒是真不少，可邀约面试却根本没有，出了八月底的字节流程稍快一些，直到九月底才有水滴和捷顺科技约面。</p>
<p>约面很不顺利。</p>
<p>长达一个多月没有流程推进的时间里，我一直在实习僧，智联招聘和牛客直推上尝试沟通和邀约面试，为即将到来的秋招流程做足准备。</p>
<p>这方面我做得很漂亮，思路也确实正确。</p>
<p>我接到了更多的电话邀约，微信推送，邮箱链接，尽可能从更多的渠道获取面试资质，即便最终的结果一定是肯定的。</p>
<p>我决心要在这场秋招中拿下真正的入职 offer，尽管时间可能花费的比我想象中的还要久。</p>
<p>每周两到三个面试已经成为了家常便饭，在这样的环境下能约到面试本身就是件不容易的事情，我每次都能打起十二分的精神去应对。</p>
<p>从刚开始在等待中就惶恐不安，到后来面对面交流的从容不迫，我已经做到可以完全不惧任何面试情景了。</p>
<p>在这期间还特意总结了一篇面试文档，专门记录了面试流程中的各个环节表达要点，自我介绍，项目介绍，项目亮点分析这些。</p>
<p>当然，每场面试结束后都会快速回忆并产出一段面经要点，这些面经记录均已收录在我的真实面经文档中。</p>
<p>这就是我的网申阶段，这段生活确实有些麻木不仁和无可奈何，但无论如何网申还得继续，每多投出一份网申简历就多一分机会。</p>
<p>尽管目前已知的被收纳进人才库的企业，已经超过了五十家，剩下的都做过了测评和笔试后杳无音讯，我相信更多的都还在初筛流程中。</p>
<p>直到昨天晚上，我确乎认真考虑了一番，节后的求职阶段，在其他求职 APP 上也可以找找机会，机会还是挺多的。</p>
<p>有关求职的话题就暂且谈论到这里，后续如果还有更多突破性的进展，我倒是可以考虑在这里记录。</p>
<p>最近这段日子也确实在争分夺秒中考量之后的学习节奏，而不仅仅是应对即将到来的长假，更是为以后平稳的技术精进打下良好的基础。</p>
<p>不知道要学些什么，那当然不打紧，这都什么年代了网上什么都有，上稀土掘金胡乱看两小时就保证会有很多新奇想法。</p>
<p>我这里就不过多废话，直截了当地排列下最近或者说计划长期付诸的实践，也许能保质保量地贯彻下去。</p>
<p>绝不会想到写这玩意儿竟会花费我一个半小时的时间，不过现在心里面确实明朗了不少，祝我顺利吧，假期里也要保持最佳状态。</p>
<p>不过也要注意休息啊，劳逸结合嘛，在最紧张的阶段也要允许自己枯萎几天。</p>
<p><strong>祝假期愉快，愿前程景气，望仕途顺利。</strong></p>
<h2 id="风止，意难平"><a href="#风止，意难平" class="headerlink" title="风止，意难平"></a>风止，意难平</h2><blockquote>
<p>2024 年 10 月 11 日</p>
</blockquote>
<p>我正在经历最困苦的阶段。</p>
<p>尽管打心眼里不肯承认这样的现实，也绝对不会想要面对这样的现状，但事实就是如此。</p>
<p>我的心态还是受到了干扰。</p>
<p>有些波动。</p>
<p>有很大的波动。</p>
<p>这两天压力有点大，身体或是精神上的不适已经开始逐渐侵蚀自己的意志，我对身边发生的一切越来越感到无望。</p>
<p>心里堵得慌。</p>
<p>我不知道该跟谁诉说这一切，也许有人想听，也许身边会有人愿意听，任由我在耳边诉说自己的苦衷。</p>
<p>可是有没有什么解决的办法。</p>
<p>这样的状况是我无论如何都不想要面对的。</p>
<p>为什么会这样。</p>
<p>现在到了什么阶段了，我经常这么想。</p>
<p>跻身于时代洪流之中，却只是那掀起的惊涛骇浪中的最不起眼的一粒尘土罢了。</p>
<p>谁能帮帮我。</p>
<p>我不知道，我不知道结果会是怎样的，我考虑到了这样的情况，预感到了这样的事情将来也会降临在我的头上。</p>
<p>我要避免这样的事情发生，我尽早开始准备，提早两三年就开始准备。</p>
<p>我想要等待一个机会，拿到机会就能实现自己的目标。</p>
<p>一天，一周，两个月，一个学期，半年，三年……时间就这么从指尖溜走，我费了不少劲。</p>
<p>可事实就是如此。</p>
<p>九月份已经过去，国庆长假也已经变成曾经，这是事实。</p>
<p>没有进度，没有后续，没有结果。</p>
<p>这也是事实。</p>
<p>二十分钟，四十分钟，一个小时，问答，头脑风暴，拿出最好状态，展现，解释，争取，憧憬，期待，等待，等待，等待。。。。</p>
<p>没有后续。</p>
<p>没有好的结果，或者说没有令我满意的结果。</p>
<p>我真的有点不知道该怎么办了、。，</p>
<p>不想承认这一点，不想眼睁睁看着自己步入泥潭挣扎，却无论如何也改变不了这样的事实。</p>
<p>这样的日子没有盼头，为什么日子会没有盼头呢。</p>
<p>没有截止时间，没人直到结果会在什么时候出现，也许是明天，也许是下周，也许是在下一秒，也许在明年，又或者在明年的这个时候。</p>
<p>如果是下一秒该多好。</p>
<p>这样的日子仿佛没有尽头，，还好我两个月前不会预料到今天会是这样的结果，那时的我可能完全接受不了。</p>
<p>我现在也接受不了。</p>
<p>我不知道应该做什么。。，我不知道自己想要做什么。还能做什么，需要做什么，还有必要做吗。</p>
<p>昨天下午给自己放了个假，今天下午又给自己放了个假，就这么呆着吧，等机会。</p>
<p>机会能等到吗。</p>
<p>原来是这种感觉，没有结果的生活竟然是这般难熬。</p>
<p>好难熬。</p>
<p>每场都在尽可能地保证最佳状态，这也是我自己唯一能把握的，我只能做到这一点，别的事情我考虑了也没用。</p>
<p>可光靠这一点远远不够啊，这个事情真的只是看眼缘嘛。</p>
<p>我已经口干舌燥了，我已经没兴趣再进行下去了，我不想陪他们玩了。</p>
<p>我不能退出，我是玩家我要是退出了谁对我负责，我只能硬着头皮继续，在这里竟然也不是自由身。</p>
<p>第一场开始到现在有多少场了，我不知道，每场我都有详尽地记录下来，但我现在实在不关心，谁又会关心这些无关痛痒的过程。</p>
<p>心仪的没有后续，他们给出价我又不满意，我要求也没那么高，可就是没有结果。</p>
<p>昨天下午放假，浑浑噩噩看了一下午也不知道应该干点什么，打电话没人接，加微信没人理，打了十几个电话了，今天还是没有消息。</p>
<p>就这么一次机会还不肯给我，我就盼着这次，可为什么要跟我开玩笑。</p>
<p>下次又会是什么时候。</p>
<p>流程好长，时间过得好慢，有点疲惫了。</p>
<p>太疲惫了，不太想再继续下去，却也知道这还远远没有结束，从某种程度上来讲，这仅仅是开始。</p>
<p>没有结果的等待，真的太煎熬了。</p>
<p>希望会出现吗，真的能得到自己想要的吗，真的会有那一天吗，谁能来告诉我。</p>
<p>我为什么看不见。</p>
<p>时间太长了，我都忘记自己是从什么时候开始的，我终究还是成为了自己讨厌的那类人。</p>
<p>现实确实给了我沉重的一击。</p>
<p>下午聊了几个，给你发了你又不回不看，理都不理，在我眼里的救命稻草或者说一线生机，在你们眼里什么都不是。</p>
<p>就发会儿牢骚吧，写一写就算了。</p>
<p>事情还会有转机吗，到底什么时候能有结果，我特么哪里知道，谁能告诉我。</p>
<p>九月的风已经吹过，十月份也已经即将步入中旬，接下来走的每一步会是关键吗，那之前走过的算不算数。</p>
<p>不清楚。</p>
<p>继续吧，算了算了，这么写出来也没多大帮助。</p>
<p>不过确实平和了不少。</p>
<h2 id="开奖"><a href="#开奖" class="headerlink" title="开奖"></a>开奖</h2><blockquote>
<p>2024 年 10 月 18 日</p>
</blockquote>
<p>昨天，开奖了。</p>
<p>昨天下午，也就是十月十七号下午两点半，我收获了这场秋招甚至是整个人生中第一份企业意向。</p>
<p>现在我也是有 offer 的人了。</p>
<p>最近一个多月一直在持续优化简历、投递简历、邀约面试、测评笔试、面经记录……</p>
<p>不过好歹有份 offer 保底了。</p>
<p>好久没有记录培训基地的生活了，最近这段日子基本都是在用文字来记录，不失一种朦胧却具体的抽象美。</p>
<p>总觉得在这里的生活就像是一场梦，一直在徘徊在求职期迷茫着的自己在梦中认识了好朋友，编织着自己那微不足道的梦想……</p>
<h2 id="筑梦"><a href="#筑梦" class="headerlink" title="筑梦"></a>筑梦</h2><blockquote>
<p>2024 年 11 月 24 日</p>
</blockquote>
<p>四个多月的时间逝去，我终于要面临这个秋天里最后的结局。</p>
<p>尽管不算完美，甚至是磕磕绊绊相当狼狈的，但这毕竟是这么长时间以来唯一的成果。</p>
<p>最近这段时间没有在这里记录实训生活，也许是因为处于求职周期的最后冲刺阶段，实在没有多余的精力和时间处理自己的情绪。</p>
<p>不过我最近已经开启了秋招栏目的更新，具体完善时间尚不明确，但我会详尽记录这个秋天下发生过的每件事情。</p>
<p>依稀记得半年前签订离职协议后的那段时间里，兴致勃勃地花了一周所有时间详尽记录实习工作期间的感受，事无巨细。</p>
<p>这次也快了。</p>
<p>一个阶段正式结束后，总是要收尾的。</p>
<h1 id="三方签订"><a href="#三方签订" class="headerlink" title="三方签订"></a>三方签订</h1><blockquote>
<p>2024 年 10 月 17 日</p>
</blockquote>
<p>可以参考这些资料，了解一下什么是三方协议：</p>
<p><a target="_blank" rel="noopener" href="https://www.hand-china.com/">上海汉得信息技术股份有限公司 | Better Experience | 汉得信息 - 汉得信息技术股份有限公司 | 汉得信息 (hand-china.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://lawyers.66law.cn/s2a23e513c5758_i1399055.aspx">签订三方协议流程是怎样的-周清智-华律网 (66law.cn)</a></p>
<p><a target="_blank" rel="noopener" href="https://lvlin.baidu.com/question/1122790226809518339.html">法律问题咨询 - 百度律临 (baidu.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://ailegal.baidu.com/?fr=seo_qa&template=business&articleType=qa&articleId=3a8768f7f39b13000104">签订三方协议流程是怎样的? (baidu.com)</a></p>
<h2 id="意向签署"><a href="#意向签署" class="headerlink" title="意向签署"></a>意向签署</h2><blockquote>
<p>2024 年 10 月 18 日</p>
</blockquote>
<p>昨天下午两点醒来看见一点半发来的意向确认书。</p>
<p><img src="http://blog.memory-life.xyz/image-20241018102641312.png"></p>
<p>点开链接自己反复看了好几遍 offer 内容，确认薪资，岗位，其他福利以及入职流程，同巩老师沟通了下。</p>
<p>把电子印章盖上，很好操作的，再点击右上角提交签署，这之后录用通知书就能直接下载到本地了。</p>
<p><img src="http://blog.memory-life.xyz/image-20241017200221498.png" alt="image-20241017200221498"></p>
<p>提交确认时还需要验证身份信息的。</p>
<p><img src="http://blog.memory-life.xyz/image-20241017200305895.png" alt="image-20241017200305895"></p>
<p><img src="http://blog.memory-life.xyz/image-20241017200335029.png" alt="image-20241017200335029"></p>
<p><img src="http://blog.memory-life.xyz/image-20241017200344887.png" alt="image-20241017200344887"></p>
<p>身份识别之后就是这样子了，签署成功！</p>
<p><img src="http://blog.memory-life.xyz/image-20241017203602270.png" alt="image-20241017203602270"></p>
<h2 id="信息确认"><a href="#信息确认" class="headerlink" title="信息确认"></a>信息确认</h2><blockquote>
<p>2024 年 10 月 18 日</p>
</blockquote>
<p>录取通知书签署完成之后，又收到新的邮件提示，要求完成入职信息填写和三方信息采集填写。</p>
<p><img src="http://blog.memory-life.xyz/image-20241018103325399.png" alt="image-20241018103325399"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018103419929.png" alt="image-20241018103419929"></p>
<p>首先完成入职信息采集。</p>
<p><img src="http://blog.memory-life.xyz/image-20241018103448804.png" alt="image-20241018103448804"></p>
<p>填写确认一些基本信息，教育经历，家庭成员，银行账号，证书，语言，确认培训时间，入职必要材料上传等。</p>
<p><img src="http://blog.memory-life.xyz/image-20241018103642564.png" alt="image-20241018103642564"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018103704232.png" alt="image-20241018103704232"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018103723143.png" alt="image-20241018103723143"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018103747468.png" alt="image-20241018103747468"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018103804156.png" alt="image-20241018103804156"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018103831551.png" alt="image-20241018103831551"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018103852649.png" alt="image-20241018103852649"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018103909732.png" alt="image-20241018103909732"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018103929496.png" alt="image-20241018103929496"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018103949501.png" alt="image-20241018103949501"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018104010283.png" alt="image-20241018104010283"></p>
<p>一周内填写完成即可。</p>
<h2 id="三方签订-1"><a href="#三方签订-1" class="headerlink" title="三方签订"></a>三方签订</h2><blockquote>
<p>2024 年 10 月 18 日</p>
</blockquote>
<p>好歹能走到这一步了。</p>
<p><img src="http://blog.memory-life.xyz/image-20241018104748181.png" alt="image-20241018104748181"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018084820026.png" alt="image-20241018084820026"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018092156842.png" alt="image-20241018092156842"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018092212759.png" alt="image-20241018092212759"></p>
<p><img src="http://blog.memory-life.xyz/image-20241018092533552.png" alt="image-20241018092533552"></p>
<p><a target="_blank" rel="noopener" href="https://sxu.jysd.com/">山西大学就业创业网 (jysd.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://sxu.jysd.com/news/view/aid/85087/tag/tzgg">用人单位网站注册使用和招聘须知 (jysd.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://zhidao.baidu.com/question/1970242518740735820.html">三方协议网签和纸质版有什么区别_百度知道 (baidu.com)</a></p>
<h1 id="巩固学习"><a href="#巩固学习" class="headerlink" title="巩固学习"></a>巩固学习</h1><blockquote>
<p>2024 年 8 月 19 日</p>
</blockquote>
<p><a target="_blank" rel="noopener" href="https://juejin.cn/post/6844903585298251789?searchId=202408191341026A2CD3B8F8FAD8189149">深入浅出 MyBatis：MyBatis 解析和运行原理上一篇介绍了反射和动态代理基础，主要是为本篇文章做个铺垫，反射使配置 - 掘金 (juejin.cn)</a></p>
<p><a target="_blank" rel="noopener" href="https://juejin.cn/post/6940243780758929421?searchId=202408191341026A2CD3B8F8FAD8189149">一文带你读懂 MyBatis 的使用对象关系映射，它的作用是在关系型数据库和对象之间作一个映射处理。项目中的业务实体有两种表 - 掘金 (juejin.cn)</a></p>
<p><a target="_blank" rel="noopener" href="https://blog.csdn.net/vcj1009784814/article/details/106391982?ops_request_misc=%7B%22request_id%22:%22172404615116800172571348%22,%22scm%22:%2220140713.130102334..%22%7D&request_id=172404615116800172571348&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-106391982-null-null.142%5Ev100%5Epc_search_result_base4&utm_term=Mybatis&spm=1018.2226.3001.4187">mybatis 看这一篇就够了，简单全面一发入魂_mybatis 一发入魂-CSDN 博客</a></p>
<p>学了一个多小时 Mybatis，感觉还不错，基本上把忘记的都捡起来了，将来的 Spring 和 Spring Boot 也可以这样系统学习。</p>
<blockquote>
<p>2024 年 9 月 16 日</p>
</blockquote>
<p>山大，学院，专业，技术掌握程度，博客，<br>校园经历（担任职务），软考，实习。</p>
<p>我是邓纬，山西大学，自动化与软件学院，软件工程专业。<br>软工专业的话就是科班，很早就接触到了 C 语言，C++ ，Python 这些编程语言，学习了解基础语法写一些 Demo 代码，对编程非常感兴趣。<br>在这期间了解到 Java 这门编程语言，从大一开始就逐步学习 Java 相关的整个技术体系，专业技能方面比较扎实你比如说计算机基础四大件， Java 基础、并发，框架的学习 Spring、SpringMVC、SpringBoot、Spring Cloud 微服务治理体系，数据库 MySQL，Redis，同时也通过写写项目来持续巩固编码水平，尽早形成自己的编码风格。也系统学习过前端三件套，写过 Vue.js，React.js。<br>经常写技术博客，有自己的个人博客，记录自己学习过程中遇到的问题，解决方案，学习经验等等。<br>在校期间还参加过一些校园活动，担任精英之英计算机社团的开发小组组长，不定期做这个技术交流分享；彩虹志愿者协会的社团负责人，统筹协调内部工作，拿到过几次优秀志愿者表彰，还打过一些比赛比如互联网+，挑战杯，蓝桥杯算法比赛这些。<br>去年十一月份考取了软考中级，软件工程师证书。<br>今年上半年三月份到六月份，在太原本地有过一段实习经历，主要做 Java 后端方向，参与公司内部自研项目 / 产品的开发，也算接触到了真实的企业项目，多积累了一份项目经验。<br>二五届秋招嘛，下半年就多投递简历找找机会，主要想做这个 java 后端开发方向的工作。<br>以上就是我的个人介绍。/ 我介绍完了。/ 我讲完了。/ 我说完了。</p>
<p>Hello, my name is Deng Wei, a graduate from the School of Automation and Software Engineering, Shanxi University, majoring in Software Engineering. Being a part of the software engineering program, I had early exposure to programming languages such as C, C++, and Python, where I learned basic syntax and wrote demo codes, fostering a deep interest in coding.During my studies, I discovered Java and gradually delved into its entire technology stack from my freshman year.</p>
<p>I maintain a personal blog where I document my learning journey, challenges encountered, solutions found, and experiences gained.</p>
<p>From March to June this year, I completed an internship in Taiyuan, focusing on Java backend development. I contributed to in-house projects and products, gaining valuable experience in real-world enterprise projects.<br>As the 2025 autumn recruitment season approaches, I’m actively seeking opportunities in Java backend development.</p>
<p>That’s all about me. Thank you.</p>
<hr>
<p>以后反问公司情况的话，问这几个方面：</p>
<p>公司的发展方向、业务方向、产品，即公司是做什么的；我的工作内容会是什么，工作氛围如何；实习薪资能给到多少，转正后呢。</p>
<p>我也提前了解过咱们公司，XXX 公司，主要负责 XXX 方向的业务，但咱们公司具体的发展方向，在做什么样的产品或者说业务，这个具体的情况可能还需要您这边稍微做点补充，我想要再深入了解下。<br>因为我应聘的是 XXX 岗位么，我想了解下我所在的部门以及我的工作内容会是什么，短期或者说长期内会做什么工作，整个开发团队的工作氛围、开发流程规范是怎样的，您可以大致说一下。<br>还有上下班时间，可能存在加班对吧，有什么福利待遇或者调休之类的，了解一下。</p>
<p>如果将来我对咱们公司有意向，或者说我们最终能够达成一致，那我比较关心的就有薪资这方面的问题，实习薪资能给到多少，试用期给到的薪资标准是怎样的，转正以后呢。</p>
<p>中维电子名片系统，是我们部门或者说我们内部自研的沟通和管理平台，专为提升企业内部运作效率和团队协作而生，你可以把它理解为我们公司内部自研的类似企业微信的交流平台，对吧。这个名片系统包括小程序端和后台管理系统两部分，主要提供通讯录管理，员工名片展示，人脉交流，发票管理还有企业信息管理等功能，用来作公司内部信息交流分享，比如一些大的业务方向调整公告，内部人员变动情况，等等。各个部门的同事都能在小程序端选择注册账户，绑定个人、企业以及所在部门的所属关系，在个人中心上传证件照片作为头像，支持自定义昵称，个性签名等。</p>
<p>对已注册的员工，都能根据个人信息生成个人名片，包括姓名，年龄，头像，住址，联系方式，座右铭等信息；也可以生成企业名片，用作企业内部人员之间的沟通交流，名片中包括姓名年龄，入职时间，所属企业，所属部门，在职岗位等信息；两种名片都支持对外分享。<br>各个部门内部的管理员可以邀请新员工加入相关部门或企业，主动发送二维码邀请链接，新用户通过扫码跳转至新页面填写个人信息并绑定到所属部门或企业；也支持员工主动申请加入企业或部门，交由管理员审核。<br>大家可以在人脉圈里发表观点，支持发送图文消息，比如可以对公司或者部门内部的管理方案提出改进建议，写写工作总结，发表下个人观点等等，对那些观点还支持评论收藏点赞。当然大家都能设置头像，昵称，个性签名等信息。</p>
<p>在后台管理系统中，涵盖了：企业通讯录管理，一个完整的通讯录系统，这里集成了内部所有员工的基本信息，姓名年龄电话住址部门这些；完备的审核机制，管理员要处理新员工申请加入部门要求的审核，人脉圈中的评论消息内容审核等；整个的企业相关信息，比如企业名称，LOGO，所属行业，是否上市等等；此外还设置了发票信息管理，方便财务和税务处理，录入了企业的发票信息，包括企业名称，税号，开户银行等，支持一键导出财务和税务数据为 Excel 表格。</p>
<p>总体来说，是部门自研的一个信息管理平台，一个做公司内部资源和信息交流共享的管理平台。</p>
<hr>
<p>这究竟是什么项目，用来做什么的。<br>MryAPI 开放平台是一个接口开放平台，顾名思义就是对外提供接口服务的，类似于工具集，比如现在市面有很多的 AI 工具集，打开网站发现有很多现成的可用的 AI 服务，比如 AI 对话聊天，AI 写作，AI 绘画，AI 翻译等等，这个接口开放平台就是类似于这样的工具集合平台。<br>我可以举个例子，通过用户使用接口开放平台成功请求到后台接口服务，这样一个完整的业务流程，快速地介绍这个项目。<br>整个项目应用了微服务治理体系，使用了 Maven 聚合工程以做好依赖管理，根据业务边界拆分为多个子模块：</p>
<p>api-backend：实现在线用户管理、接口管理比如接口发布与下线，以及接口在线调用等核心功能。<br>api-gateway：实现路由转发、访问控制、用户鉴权、流量染色，做统一的业务处理。<br>api-interface：提供请求的真实接口功能。<br>api-common：同意抽取全局的实体映射类、通用返回类以及自定义错误码等。<br>api-sdk：封装调用自定义接口实现代码，一行代码即可边便捷调用后台服务。</p>
<p>在 api-interface 模块中，我自主设计一些便捷常用的接口服务，比如获取随机诗词，获取随机壁纸，天气预报查询，本机 IP 地址查询等等。<br>用户注册登陆到平台之后，可以直接调用在线接口查看效果，但这个项目更多地用来服务开发者，开发者通过下载我封装好的 api-sdk 即软件开发工具包并在代码中引入，即可实现一键调用接口服务。</p>
<p>为了保证接口调用的安全性，对吧，不论是在线调用还是在代码中使用 SDK 调用接口，调用请求最终都会打到后台的接口服务系统，为了保证整个调用期间的安全性，我们给每个已注册的用户都分配了唯一的密钥对，一个公钥和一个私钥，在个人中心可以看到，暂时不支持修改。在发起接口调用的过程中，调用请求会携带已登录用户的密钥对，在网关层面解析到请求，通过校验请求头中携带的的字段是否合规，以此来验证或者说判断这次请求是否合法，保证接口调用的稳定性。</p>
<p>用户调用接口发送接口调用请求，先在 backend 模块中调用对应的 interfaceInfo/invoke 方法，校验参数、判断接口 id 是否存在、是否关闭等，然后获取到当前登录用户，并查出调用者的 accessKey 和 secretKey，并以此作为参数创建 SDK 客户端对象，然后把刚才参数中的 userRequestParams 通过 Gson 库将 JSON 字符串反序列化为 Java 对象，SDK 客户端封装一系列请求参数，使用 hutool 工具包，首先将请求发送给 gateway 网关模块。</p>
<p>在网关网关中，我们实现了全局过滤器，解析到 backend 模块发送的请求后，先获取请求头上的一系列信息，包括“请求参数、路径、方法、来源地址”等，并通过获取请求头中特定信息实现流量染色。该部分设置了黑白名单，只允许 IP 地址为当前服务器的请求通过，然后我们再做鉴权，通过传入的 accessKey 去找出对应的用户，并且对请求的时间等作校验，再通过 accessKey 查出来的用户，进一步得到对应的 secretKey。与此同时，我们还需要对得到的 path 和 method 所对应的接口进行查询，判断是否存在，如果不存在则抛出指定的异常。最后，如果上述校验都没问题，那么我们认为这个请求是合法的，通过一个返回结果处理器 handleResponse，将用户和接口对应表 user_interface_info 中的用户的剩余接口调用次数等字段进行更新操作，结束后完成业务流程。</p>
<p>在整个调用过程当中：<br>1、使用 Nacos 作注册中心，<br>2、使用 Spring Cloud Gateway 作网关，实现请求限流，权限校验（访问来源校验，用户身份验证、接口存在性检查），接口调用统计，请求和响应日志处理，路由转发，以及聚合文档，分布式 session，跨域解决等。<br>3、使用 Openfeign 封装了部分鉴权和统计操作，如用户身份验证、接口存在性检查，接口调用统计等，保持 api-gateway 模块代码量简洁，实现服务间通信和远程服务调用。</p>
<p>1、<br>2、<br>3、在上面的过程中，我提到了“鉴权、校验、查询用户、查询 secretKey”等操作，这些操作对应的代码是在 backend 项目中，如果我们直接把对应的代码放到 gateway 项目，势必会增加项目的复杂度以及冗余等。所以我想到了使用 Dubbo 这样一个 RPC 框架，通过@EnableDubbo、@DubboReference、@DubboService 等注解，配置相应的 yml 属性，并以 Nacos 作为服务的注册中心，实现了远程业务代码的调用。</p>
<p>此外项目还使用了 sentinel 对主要接口进行熔断和限流。</p>
<p>这就是 MryAPI 开放平台，一个接口开放平台。</p>
<p>为了保证接口调用的合理性，用户调用接口的次数一定是有限制的，比如调用一次接口服务需要花费一个积分，而积分可以通过每日签到、邀请新用户领取，后续当然也会提供付费购买对吧，比如一块钱购买五十个积分即五十次调用机会。</p>
<p>国家人力资源和社会保障部</p>
<p><a target="_blank" rel="noopener" href="https://gitee.com/deng-2022">https://gitee.com/deng-2022</a><br>Java 后端_邓纬<br>18535854762 丨<a href="mailto:&#51;&#51;&#x34;&#x38;&#52;&#48;&#55;&#x35;&#52;&#55;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">&#51;&#51;&#x34;&#x38;&#52;&#48;&#55;&#x35;&#52;&#55;&#64;&#113;&#113;&#46;&#99;&#111;&#109;</a> 丨太原<br>个人博客：<a target="_blank" rel="noopener" href="http://deng-2022.atomgit.net/blog">http://deng-2022.atomgit.net/blog</a></p>
<p>荣誉/奖项：软考中级（软件设计师），Java 计算机二级，英语（CET-4），校三好学生（2023-2024）<br>校园经历：<br>精英之英 IT 社团，担任开发组长，领导并协调小组成员参与项目开发，不定期作技术交流分享。<br>彩虹志愿者协会，统筹协调内部工作并配合山西省红十字会高效完成各项活动，荣获优秀志愿者表彰。<br>专业 GPA：3.25 / 4.00</p>
<p>计算机基础：熟练掌握计算机网络、数据结构和算法、操作系统和计算机组成原理。<br>Linux：熟练使用 Linux，有 Linux 下开发的实际经验。<br>Java：熟练掌握基础知识，深入理解 Java 并发、JVM、反射、泛型等语言特性。<br>数据库：熟练掌握 MySQL 数据库以及常见优化手段（比如索引、SQL 优化、读写分离&amp;分库分表），Redis 使用经验丰富。<br>搜索引擎：Elasticsearch 使用经验丰富，掌握倒排索引和分词机制，熟悉查询 DSL 语言。<br>框架：熟练掌握 Spring、Spring MVC、SpringBoot、Mybatis、Spring Security 等主流开发框架。<br>分布式：</p>
<ul>
<li>熟练掌握分布式下的常见理论如 CAP、BASE，熟悉微服务治理原则。</li>
<li>熟悉 Spring Cloud 全家桶常见组件的使用。<br>工具：熟练掌握 Git、Maven 和 VMware 虚拟机等工具。<br>前端：实践过 Layui、Thymeleaf，有 Vue，React 的实际开发经验。</li>
</ul>
<p>山西中维信息工程股份有限公司 - Java 后端开发 研发一部 2024.03 - 2024.06<br>技术架构：SpringBoot + MySQL + Redis + Vue.js + ElementUI + uniapp<br>项目描述：随着企业规模扩大，公司决定开发中维电子名片系统集中数字化管理员工信息，实现内部员工的个人名片生成管理和工作交流分享，作为公司内部宣传渠道促进中维企业文化建设。<br>个人贡献：</p>
<ol>
<li>运用 EasyExcel 库并集成监听器机制，实现企业名片列表与在线用户列表数据的高效导入与导出功能。</li>
<li>设计人脉圈消息列表内容展示并标记消息状态（如已读、未读、待处理等），通过内容审核和发送者身份校验等完善审核机制，并及时反馈审核结果。</li>
<li>使用二维码生成邀请链接，制作海报分享邀请用户加入企业，记录邀请并同步更新被邀请人信息。</li>
<li>参与学习并应用企业版后端项目模板，开发代码自动生成工具，根据库表结构自动生成 CRUD 接口代码。</li>
<li>对于项目中复杂的集合处理（比如为企业列表关联已加入企业的员工），使用 Java 8 Stream API 和 Lambda 表达式来简化编码。</li>
<li>负责企业名片和通讯录的数据校验核对，通过 SQL 优化和库表管理优化接口查询，显著提升查询性能。</li>
<li>熟练运用 Git 进行版本管理，在禅道积极提交并跟踪 Bug，配合团队内部开发人员协同解决并验收，完成自测整改计划。</li>
</ol>
<p>MryAPI 开放平台 - <a target="_blank" rel="noopener" href="http://deng-2022.atomgit.net/memory-api-doc/">http://deng-2022.atomgit.net/memory-api-doc/</a> 2024.02 - 2024.07<br>技术架构：SpringBoot + Nacos + Spring Cloud Gateway+ MySQL + React.js<br>项目描述：一个提供丰富的 API 接口服务全栈微服务架构接口开放平台，配备直观的调试工具和实时监控统计功能，用户无需繁杂的配置即可轻松实现接口管理和调用。<br>主要工作：</p>
<ol>
<li>模板定制：定制 SpringBoot 初始化模板，包括全局请求响应拦截、全局异常处理、Swagger + Knife4j 接口文档生成、跨域支持及多环境配置等核心功能。</li>
<li>自主设计获取随机壁纸、随机生成诗词等多样化接口服务，涵盖多种应用场景和需求，并提供有详尽的接口文档方便开发者调用。</li>
<li>服务网关：使用 Spring Cloud Gateway 实现微服务网关，实现前台接口调用请求过滤转发、统一认证授权和请求限制，提升接口服务稳定性。</li>
<li>签名认证：自主实现 API 签名认证，为每个注册用户分配唯一密钥对（accessKey 和 secretKey）。用户请求时须附带密钥，服务端通过 SHA256 算法生成签名并验证，确保请求来源合法且数据完整。</li>
<li>利用 Maven 聚合工程和 Nacos 注册中心，根据接口调用业务逻辑将原单体应用拆分为五个独立模块，实现微服务架构转型。</li>
<li>服务解耦：使用 Dubbo RPC 框架抽取优化公共服务（如接口校验、用户鉴权、流量统计），确保网关职责单一性，实现网关模块轻量化和服务间解耦。</li>
<li>客户端 SDK：应用 SpringBoot 自动配置机制，自主设计客户端 SDK ，大幅简化平台接入流程实现接口高效调用。</li>
</ol>
<p>MrySearch 搜索中台 - <a target="_blank" rel="noopener" href="http://deng-2022.atomgit.net/memory-search-doc/">http://deng-2022.atomgit.net/memory-search-doc/</a><br>技术架构：SpringBoot + MySQL + Redis + Elasticsearch + Logstash + Vue.js<br>项目描述：一个提供一站式搜索和内容管理的聚合搜索中台，通过多元聚合搜索实现信息全覆盖，结合个性化中心和用户行为趋势分析实现搜索优化，同时构建创作社区以满足用户交流和知识共享。<br>主要工作：</p>
<ol>
<li>通过 Spring AOP 切面编程和自定义注解抽象公共服务，对方法执行前后进行统一处理，实现权限校验和全局请求拦截，并进一步简化日志管理。</li>
<li>权限校验：采用 JWT 作为 Session 的替代方案，结合 SpringBoot 框架深度集成和 JWT 的携带式令牌机制，进一步简化用户身份认证流程。</li>
<li>定时任务：配置定时任务，使用 Hutool 和 gson 获取外源热榜博文 id，并使用 Jsoup 实时抓取文章数据，利用 CSS Selector 解析 HTML 并入库。</li>
<li>深入学习 Elastic Stack 技术栈，使用查询 DSL 语言成功规划并实施关键词语高亮、搜索词条建议以及热门话题分析等搜索特性。</li>
<li>设计模式：通过适配器模式封装数据源接口，结合门面模式实现搜索结果聚合，利用注册器模式动态切换聚合搜索服务，显著简化前后端开发和调用过程。</li>
<li>数据同步：自主搭建 Logstash 数据同步管道并掌握相关配置，实现定时同步 MySQL 内文章变更数据记录到 ES。</li>
<li>异步编程：使用 Jsoup 库从外部网站抓取大量诗词数据，并使用 CompletableFuture 大幅减少数据库批量插入的等待时间，性能提升近 70%。</li>
</ol>
<p>开发经验：Java 开发实践和云服务器环境操作经验丰富，具备一定的项目部署、故障快速诊断及解决能力。<br>博文积累：热爱编程，坚持每日记录编程学习生活中的学习经验及技巧，在个人博客累计输出八十余篇博文，总计一千余张图片、八十余万文字。<br>技术追踪：对技术保持好奇心，热衷在开源中国、Github 等技术社区学习前沿技术，追踪互联网行业动态。</p>
<p>一年内我将深入学习 Java 后端技术，参与开源项目并提升软技能；三年内计划承担更多职责，晋升至技术管理岗位，持续学习新技术并拓展业务领域；五年内致力于成为行业专家，实现财富自由，同时探索创业机会并回馈社会。</p>
<p>读书，写作，画画，下象棋，做心理疏导。</p>
<blockquote>
<p>2024 年 10 月 18 日</p>
</blockquote>
<p>这个章节总感觉破破烂烂的，也许这部分内容就没有存在的必要呢。</p>
<h1 id="破碎感"><a href="#破碎感" class="headerlink" title="破碎感"></a>破碎感</h1><blockquote>
<p>2024 年 10 月 8 日</p>
</blockquote>
<p>今天早上刷牛客，看到了好多牛友在分享 25 年秋招现状，深有感触，就把别人的生活点滴记录在这里吧：</p>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/671018990365351936?sourceSSR=post">2025 秋招现状，劝大家放平心态_牛客网 (nowcoder.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/669225134716116992?sourceSSR=search">生不逢时，三年 Java 一场空_牛客网 (nowcoder.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/feed/main/detail/8cf7192c76194bf3aaea65a84ef8fa57?sourceSSR=search">找到工作真的就快乐了吗？_牛客网 (nowcoder.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/672367903274004480?sourceSSR=post">华为工作的小感受_牛客网 (nowcoder.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/670700018340225024?sourceSSR=post">秋招求职记_牛客网 (nowcoder.com)</a></p>
<blockquote>
<p>2024 年 10 月 11 日</p>
</blockquote>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/feed/main/detail/8729b0a10da74a4f8cf6c09ba33d8b0b?sourceSSR=home">0 offer 的话，就还是少玩会吧…_牛客网 (nowcoder.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/673289352868290560?sourceSSR=dynamic">我觉得秋招没必要焦虑了_牛客网 (nowcoder.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/673854768116162560?sourceSSR=post">懂的人早已泪流满面 😭_牛客网 (nowcoder.com)</a></p>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/666621396922986496?sourceSSR=users">一觉醒来，秋招的难度下降了一万倍_牛客网 (nowcoder.com)</a></p>
<blockquote>
<p>2024 年 10 月 12 日</p>
</blockquote>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/674335693602136064?sourceSSR=users">千万不要告诉妈妈秋招进度！_牛客网 (nowcoder.com)</a></p>
<blockquote>
<p>2024 年 10 月 15 日</p>
</blockquote>
<p><a target="_blank" rel="noopener" href="https://www.nowcoder.com/discuss/675388284171821056?sourceSSR=users">秋招结束了_牛客网 (nowcoder.com)</a></p>

                
              </div>
            
            <hr/>
            <div>
              <!-- 文章页面 - 底部标签 -->
<div class="post-metas my-3">
  
  <div class="post-meta mr-3 d-flex align-items-center">
    <i class="iconfont icon-category"></i>
    <!-- 归档页 - 文章列表 -->


<span class="category-chains">
  
  
    
      <span class="category-chain">
        
  <a href="/blog/categories/%E8%81%8C%E8%B7%AF%E6%98%9F%E7%81%AB/" class="category-chain-item">职路星火</a>
  
  

      </span>
    
  
</span>

  </div>
   
  <div class="post-meta">
    <i class="iconfont icon-tags"></i>
    
    <a href="/blog/tags/%E6%97%A5%E8%AE%B0/">#日记</a>
    
    <a href="/blog/tags/%E5%AE%9E%E8%AE%AD/">#实训</a>
    
  </div>
  
</div>


              <!-- 文章页面 - 底部标签下方 -->

  
  <div class="license-box my-3">
    <div class="license-title">
      <div>逐梦之旅：我梦想启航的港湾，也是我成长的沃土</div>
      <div>https://test.atomgit.net/blog/2024/08/05/逐梦之旅：我梦想启航的港湾，我成长的沃土/</div>
    </div>
    <div class="license-meta">
      
        <div class="license-meta-item">
          <div>作者</div>
          <div>Memory</div>
        </div>
      
      
        <div class="license-meta-item license-meta-date">
          <div>发布于</div>
          <div>2024年8月5日</div>
        </div>
      
      
        <div class="license-meta-item license-meta-date">
          <div>更新于</div>
          <div>2024年11月24日</div>
        </div>
      
      
        <div class="license-meta-item">
          <div>许可协议</div>
          <div>
            
              
              
                <a target="_blank" href="https://creativecommons.org/licenses/by/4.0/">
                  <span class="hint--top hint--rounded" aria-label="BY - 署名">
                    <i class="iconfont icon-by"></i>
                  </span>
                </a>
              
            
          </div>
        </div>
      
    </div>
    <div class="license-icon iconfont"></div>
  </div>



              
                <div class="post-prevnext my-3">
                  <article class="post-prev col-6">
                    
                    
                      <a href="/blog/2024/08/18/%E6%97%B6%E5%85%89%E4%B8%8D%E8%80%81%EF%BC%8C%E6%88%91%E4%BB%AC%E4%B8%8D%E6%95%A3%EF%BC%9A%E8%87%B4%E6%88%91%E7%94%9F%E5%91%BD%E4%B8%AD%E6%9C%80%E7%8F%8D%E8%B4%B5%E7%9A%84%E6%9C%8B%E5%8F%8B%E4%BB%AC/" title="时光不老，我们不散：致我生命中最珍贵的朋友们">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">时光不老，我们不散：致我生命中最珍贵的朋友们</span>
                        <span class="visible-mobile">上一篇</span>
                      </a>
                    
                  </article>
                  <article class="post-next col-6">
                    
                    
                      <a href="/blog/2024/07/14/%E6%82%A0%E7%84%B6%E6%97%A5%E5%B8%B8%EF%BC%9A%E6%85%A2%E7%85%AE%E6%97%B6%E5%85%89%E4%B8%8B%E7%9A%84%E7%94%9F%E6%B4%BB%E8%89%BA%E6%9C%AF/" title="悠然日常：慢煮时光下的生活艺术">
                        <span class="hidden-mobile">悠然日常：慢煮时光下的生活艺术</span>
                        <span class="visible-mobile">下一篇</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </article>
                </div>
              
            </div>

            <!-- 文章页 - 评论上方 -->

  
  
    <article id="comments">
      
  <div id="valine"></div>
  <script type="text/javascript">
    Fluid.utils.loadComments('#valine', function() {
      Fluid.utils.createScript('https://cdn.jsdelivr.net/gh/HCLonely/Valine@latest/dist/Valine.min.js', function() {
        var options = Object.assign(
          {"appId":"T1hUHH9Ks1ggG9DBE3HgUPpV-gzGzoHsz","appKey":"XFkgzzvzNo3J3uNCbBiSOFKc","path":"window.location.pathname","placeholder":"填取QQ号和邮箱后评论，支持读取头像及消息提醒，留下点什么叭... ᶘ ᵒᴥᵒᶅ","avatar":"Gravatar","meta":["nick","mail","link"],"requiredFields":[],"pageSize":10,"lang":"zh-CN","highlight":true,"recordIP":false,"serverURLs":"https://t1huhh9k.lc-cn-n1-shared.com","emojiCDN":null,"emojiMaps":null,"enableQQ":true,"master":"8c9b6d6637904da62d74d019cc6982de","friends":"0188229a9cfc284176ea9135cb9514cc","visitor":true},
          {
            el: "#valine",
            path: window.location.pathname,
            app_id: "",
            app_key: "",
            placeholder: "填取QQ号和邮箱后评论，支持读取头像及消息提醒，留下点什么叭... ᶘ ᵒᴥᵒᶅ",
            avatar: "Gravatar",
            meta: ["nick","mail","link"],
            pageSize: "10",
            lang: "zh-CN",
            highlight: true,
            recordIP: false,
            serverURLs: "https://t1huhh9k.lc-cn-n1-shared.com",

            // 设置Bilibili表情包地址
            emojiCDN: '//i0.hdslb.com/bfs/emote/', 
            // 表情title和图片映射
            emojiMaps: {
                "tv_白眼": "48f75163437445665a9be80bb316e4cb252c5415.gif@48w_48h.webp",
                "tv_doge": "302d6c88c63ed162c81a49cafe7ed2709e6fb955.gif@48w_48h.webp",
                "tv_坏笑": "5d2572efd09aab5dde9e2a198bb3f9ac1e2a982e.gif@48w_48h.webp",
                "tv_难过": "9c6b41008a67755410f712334c64313df5f91b3f.gif@48w_48h.webp",
                "tv_生气": "1902a5a2df5b5c931d88c12f0feb264b1e109d0d.gif@48w_48h.webp",
                "tv_委屈": "af5a5853edb43a8178a8cb5df707fa5e88143699.gif@48w_48h.webp",
                "tv_斜眼笑": "c66568b471192ca1f62f6ed4384dc1b283ab7508.gif@48w_48h.webp",
                "tv_呆": "d3fa91e4db9215eb1e20ab9da44f1214aa4bda7b.gif@48w_48h.webp",
                "tv_发怒": "3959eb81b952e4fa8d269d98f9e3639172d84073.gif@48w_48h.webp",
                "tv_呕吐": "db58e9442aae26694af18cc1683607cca3a16763.gif@48w_48h.webp",
                "tv_思考": "b63f9146bfd985af014f8d6d4bdb498805be48f9.gif@48w_48h.webp",
                "tv_微笑": "b98656855d782f61cb8edc7f7fca6563ecafff7e.gif@48w_48h.webp",
                "tv_疑问": "fce1b1a0f3b0e39a2dc16a18508dba7b91e929f4.gif@48w_48h.webp",
                "tv_大哭": "cba61f05f3039b02a7ffc0dfcd9d7995df9fdd74.gif@48w_48h.webp",
                "tv_鼓掌": "be106e6b265883a9f28fbe10f7b765701e2618d4.gif@48w_48h.webp",
                "tv_抠鼻": "696d9f93e722144dc2a78aeffc569418fdf3d565.gif@48w_48h.webp",
                "tv_亲亲": "3534ea44ab74bd20352b88c245a06c4b4c46d271.gif@48w_48h.webp",
                "tv_调皮": "fcd967395fd14e4dd5829fa7e8a967ce23205e52.gif@48w_48h.webp",
                "tv_笑哭": "1c2fd1e8c9dde12812f86e5d4cbddd8993d98082.gif@48w_48h.webp",
                "tv_晕": "030040ec5c9ddc9e3d067658c4139e7314ab42f8.gif@48w_48h.webp",
                "tv_点赞": "30ecff401245fb56bcc1cf588d1809ac1ab1607c.gif@48w_48h.webp",
                "tv_害羞": "411a3e459e8580f5bfd9f639a408247c4b509935.gif@48w_48h.webp",
                "tv_睡着": "3c8b5e293261287a6203597e29b3de07df4d18c6.gif@48w_48h.webp",
                "tv_色": "a0c6d99ab0ab63b8648f5283ff72cec04b604828.gif@48w_48h.webp",
                "tv_吐血": "e17e4539e169d14a3389ff147afea760cebe5de5.gif@48w_48h.webp",
                "tv_无奈": "eb4cb5f07cfd177c7e6a7914316717e56d9cc1d0.gif@48w_48h.webp",
                "tv_再见": "344f61609ecce2008520dc8a977b6169215748a9.gif@48w_48h.webp",
                "tv_流汗": "390bccec65eaff536bd5bb2a0c5b8b0bdea47334.gif@48w_48h.webp",
                "tv_偷笑": "7f11e6f7f63e79112b833bd41fa13a83d7cd8474.gif@48w_48h.webp",
                "tv_抓狂":"a476b93ecd8e94ac3257323fd822f91cef212de2.gif@48w_48h.webp",
                "tv_黑人问号":"b609adf664be33224a9923262031165ae3e34cd2.gif@48w_48h.webp",
                "tv_困":"91c2bf34ecf842d7016c01d841db3d4074bd281f.gif@48w_48h.webp",
                "tv_打脸":"b0fad4856e59c1240e448437da3287bb5ce547e5.gif@48w_48h.webp",
                "tv_闭嘴":"a3fc5388b09e945be3f18fe23bfed5874a0285b7.gif@48w_48h.webp",
                "tv_鄙视":"293b5d459e6264ecf314d20937a936fa672ccd1e.gif@48w_48h.webp",
                "tv_腼腆":"30984e8264324f901d19bea85dada7103b695534.gif@48w_48h.webp",
                "tv_馋":"2525c5703c594e5f0752f68db8948773caebde47.gif@48w_48h.webp",
                "tv_可爱":"f92d20f76258bc5f33fc9d7c5e2a1d41fef19a7c.gif@48w_48h.webp",
                "tv_发财":"76131e52c9b033681b4c896c6024d29ef7ec7ec2.gif@48w_48h.webp",
                "tv_生病":"beb94829fe04f1a41bd6ca611e1f6ca9ca169afa.gif@48w_48h.webp",
                "tv_流鼻血":"8ef473f74a849420da712487b2f56ecca1f695f5.gif@48w_48h.webp",
                "tv_尴尬":"e0b84ef5ee3e5b8978e584c7c5a6550c51d15f84.gif@48w_48h.webp",
                "tv_大佬":"14ca0c05382b8741940942b2430b7a8d55c02f7e.gif@48w_48h.webp",
                "tv_流泪":"7e71cde7858f0cd50d74b0264aa26db612a8a167.png@48w_48h.webp",
                "tv_冷漠":"b9cbc755c2b3ee43be07ca13de84e5b699a3f101.png@48w_48h.webp",
                "tv_皱眉":"72ccad6679fea0d14cce648b4d818e09b8ffea2d.png@48w_48h.webp",
                "tv_鬼脸":"0ffbbddf8a94d124ca2f54b360bbc04feb6bbfea.png@48w_48h.webp",
                "tv_调侃":"4bc022533ef31544ca0d72c12c808cf4a1cce3e3.png@48w_48h.webp",
                "tv_目瞪口呆":"0b8cb81a68de5d5365212c99375e7ace3e7891b7.png@48w_48h.webp",
            },

            master: "8c9b6d6637904da62d74d019cc6982de",
            friends: "0188229a9cfc284176ea9135cb9514cc",
            tagMeta: ["博主","友人","访客"],
            visitor: true // 阅读量统计
          }
        )
        new Valine(options);
        Fluid.utils.waitElementVisible('#valine .vcontent', () => {
          var imgSelector = '#valine .vcontent img:not(.vemoji)';
          Fluid.plugins.imageCaption(imgSelector);
          Fluid.plugins.fancyBox(imgSelector);
        })
      });
    });
  </script>
  <noscript>Please enable JavaScript to view the comments</noscript>


    </article>
  


          </article>
        </div>
      </div>
    </div>

    <div class="side-col d-none d-lg-block col-lg-2">
      <!-- 文章页面 - 右侧目录 -->

  <aside class="sidebar" style="margin-left: -1rem">
    <!-- 文章页面 - 右侧目录上方 -->
<div id="toc">
  <p class="toc-header">
    <i class="iconfont icon-list"></i>
    <span>目录</span>
  </p>
  <div class="toc-body" id="toc-body"></div>
</div>



  </aside>



    </div>
  </div>
</div>





  



  



  



  



  







    

    
      <a id="scroll-top-button" aria-label="TOP" href="#" role="button">
        <i class="iconfont icon-arrowup" aria-hidden="true"></i>
      </a>
    

    
      <!-- 博客 - 搜索框 -->
<div
  class="modal fade"
  id="modalSearch"
  tabindex="-1"
  role="dialog"
  aria-labelledby="ModalLabel"
  aria-hidden="true"
>
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">
          搜索
        </h4>
        <button
          type="button"
          id="local-search-close"
          class="close"
          data-dismiss="modal"
          aria-label="Close"
        >
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input
            type="text"
            id="local-search-input"
            class="form-control validate"
          />
          <label data-error="x" data-success="v" for="local-search-input"
            >关键词</label
          >
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>

    

    
        <div class="modal fade" id="modalNotice" tabindex="-1" role="dialog" aria-hidden="true"
     style="font-family: 'Ma Shan Zheng', cursive; color: #ffffff;">
    <div class="modal-dialog modal-dialog-scrollable" role="document"
         style="font-family: 'Ma Shan Zheng', cursive;">
        <div class="modal-content" style="border-radius: 6px;">
            <!-- 公告头部 - 响应式设计 -->
            <div class="modal-header text-center"
                 style="padding: 1rem 1.5rem;border-bottom: 1px solid rgba(255,255,255,0.2)">
                <h4 class="modal-title w-100 font-weight-bold"
                    style="font-family: 'Microsoft YaHei', sans-serif;letter-spacing: 1px;text-shadow: 1px 1px 2px rgba(0,0,0,0.2);color: #ffffff;
                           font-size: 1.5rem; /* 默认PC端大小 */
                           /* 移动端适配 */
                           @media (max-width: 768px) {
                               font-size: 1.2rem;
                           }">
                    <div class="notice-title">
                        <i class="fas fa-bullhorn mr-2"> 围栏告示</i>
                    </div>
                    <small style="display: block; font-family: 'STKaiti', serif; font-size: 0.6em; color: #a0a0a0; margin-top: 3px;">
                        旧梦轻拾 · 谨识
                    </small>
                </h4>
            </div>

            <!-- 公告内容区 - 响应式设计 -->
            <div class="modal-body"
                 style="padding: 2rem; /* PC端 */
                        max-height: 70vh;
                        overflow-y: auto;
                        /* 移动端适配 */
                        @media (max-width: 768px) {
                            padding: 1rem;
                            max-height: 60vh;
                        }">
                <!-- 图片容器（响应式设计） -->
                <!--                <div class="announcement-hero"-->
                <!--                     style="margin-bottom: 2rem; /* PC端 */-->
                <!--                            /* 移动端适配 */-->
                <!--                            @media (max-width: 768px) {-->
                <!--                                margin-bottom: 1rem;-->
                <!--                            }">-->
                <!--                    <img src="http://blog.memory-life.icu/%E3%80%90%E5%93%B2%E9%A3%8E%E5%A3%81%E7%BA%B8%E3%80%91%E5%8A%A8%E6%BC%AB-%E5%A4%95%E9%98%B3%E9%93%81%E8%BD%A8.jpg"-->
                <!--                         alt="时光溯洄题图"-->
                <!--                         style="width: 100%; -->
                <!--                                max-height: 400px; /* PC端 */-->
                <!--                                object-fit: cover;-->
                <!--                                border-radius: 4px; -->
                <!--                                box-shadow: 0 2px 12px rgba(0,0,0,0.1);-->
                <!--                                /* 移动端适配 */-->
                <!--                                @media (max-width: 768px) {-->
                <!--                                    max-height: 30vh;-->
                <!--                                }"-->
                <!--                         loading="lazy">-->
                <!--                </div>-->

                <!-- 静态公告列表 - 响应式设计 -->
                <div class="announcement-list">
                    <div class="announcement-item"
                         style="margin-bottom: 2rem; /* PC端 */
                                padding: 2rem;
                                background: rgba(255,255,255,0.05);
                                border-radius: 8px;
                                /* 移动端适配 */
                                @media (max-width: 768px) {
                                    margin-bottom: 1rem;
                                    padding: 1rem;
                                }">
                        <h2 style="color: #d38532;
                                  font-weight: 600;
                                  font-size: 1.5rem; /* PC端 */
                                  margin-bottom: 1.2rem;
                                  letter-spacing: 0.5px;
                                  /* 移动端适配 */
                                  @media (max-width: 768px) {
                                      font-size: 1.2rem;
                                      margin-bottom: 1rem;
                                  }">
                            <i class="fas fa-calendar-check mr-2"></i>时光溯洄
                            <small style="display: block; font-size: 0.6em; color: #b8b8b8;text-align: right;">——
                                晨昏往事</small>
                        </h2>
                        <div style="color: #e0e0e0;
                                  line-height: 1.8; /* PC端 */
                                  font-size: 1.05rem;
                                  letter-spacing: 0.3px;
                                  /* 移动端适配 */
                                  @media (max-width: 768px) {
                                      line-height: 1.6;
                                      font-size: 0.95rem;
                                  }">
                            <!-- 内容保持不变 -->
                            <p style="margin-bottom: 1rem; text-indent: 2em;">你好。</p>
                            <!-- 其余段落内容... -->
                            <p style="margin-bottom: 1rem; text-indent: 2em;">
                                建站后的第813天，在百忙之中总算又能抽出时间来，对整个博客站点功能做整体的规划及优化完善。</p>
                            <p style="margin-bottom: 1rem; text-indent: 2em;">
                                在刚刚过去的几年时间里，往事皆以笔墨挥毫于时光素笺之上，数百天如一日，故事的书写从未间断过。</p>
                            <p style="margin-bottom: 1rem; text-indent: 2em; font-style: italic; color: #b8b8b8;">
                                时光悠悠，日月如流，过往的蹉跎岁月总在不经意间在心间回眸。</p>
                            <p style="margin-bottom: 1rem; text-indent: 2em; font-weight: 500; color: #ffffff;">
                                俯仰之间，轻舟已过万重山。</p>
                            <p style="margin-bottom: 1rem; text-indent: 2em; font-weight: 500; color: #ffffff;">
                                蹉跎之处，往事皆成云烟散。</p>
                            <p style="margin-bottom: 1rem; text-indent: 2em;">
                                这几年的时光过得太快了，好像过去这段岁月里的所有事情都发生在一瞬间。</p>
                            <p style="margin-bottom: 1rem; text-indent: 2em;">
                                这几年的时光同样太久了，久到那些时日里仿佛囊括了自己的整个前半生。</p>
                            <p style="margin-bottom: 0; text-align: right; font-size: 0.95rem; color: #a0a0a0;">——
                                八百余个昼夜，当时只道是地久天长，如今回望，不过浮光掠影间的一瞬。</p>
                        </div>
                    </div>

                    <!-- 第二个公告项 - 响应式设计 -->
                    <div class="announcement-item"
                         style="margin-bottom: 2rem; /* PC端 */
                                padding: 2rem;
                                background: rgba(255,255,255,0.05);
                                border-radius: 8px;
                                /* 移动端适配 */
                                @media (max-width: 768px) {
                                    margin-bottom: 1rem;
                                    padding: 1rem;
                                }">
                        <h2 style="color: #6cc70b;
                                  font-weight: 600;
                                  font-size: 1.5rem; /* PC端 */
                                  margin-bottom: 1.2rem;
                                  letter-spacing: 0.5px;
                                  /* 移动端适配 */
                                  @media (max-width: 768px) {
                                      font-size: 1.2rem;
                                      margin-bottom: 1rem;
                                  }">
                            <i class="fas fa-book-open mr-2"></i>墨痕新注
                            <small style="display: block; font-size: 0.6em; color: #b8b8b8;text-align: right;">——
                                待起之章</small>
                        </h2>
                        <div style="color: #e0e0e0;
                                  line-height: 1.8; /* PC端 */
                                  font-size: 1.05rem;
                                  letter-spacing: 0.3px;
                                  /* 移动端适配 */
                                  @media (max-width: 768px) {
                                      line-height: 1.6;
                                      font-size: 0.95rem;
                                  }">
                            <!-- 列表内容 - 响应式设计 -->
                            <ul style="padding-left: 1.8rem; /* PC端 */
                                      margin-bottom: 1.5rem;
                                      /* 移动端适配 */
                                      @media (max-width: 768px) {
                                          padding-left: 1.5rem;
                                          margin-bottom: 1.2rem;
                                      }">
                                <li style="margin-bottom: 0.8rem; /* PC端 */
                                         position: relative;
                                         list-style-type: none;
                                         /* 移动端适配 */
                                         @media (max-width: 768px) {
                                             margin-bottom: 0.6rem;
                                         }">
                                    <span style="position: absolute;
                                               left: -1.8rem; /* PC端 */
                                               color: #6cc70b;
                                               /* 移动端适配 */
                                               @media (max-width: 768px) {
                                                   left: -1.5rem;
                                               }">◆</span>
                                    <span style="font-weight: bolder;">溯源计划：</span>新增博文"溯源计划"，旨在用先进的数字技术留住过去的旧时光，让家族的记忆在数字云端生长发芽，全站博文数量已达90+。
                                </li>
                                <li style="margin-bottom: 0.8rem; /* PC端 */
                                         position: relative;
                                         list-style-type: none;
                                         /* 移动端适配 */
                                         @media (max-width: 768px) {
                                             margin-bottom: 0.6rem;
                                         }">
                                    <span style="position: absolute;
                                               left: -1.8rem; /* PC端 */
                                               color: #6cc70b;
                                               /* 移动端适配 */
                                               @media (max-width: 768px) {
                                                   left: -1.5rem;
                                               }">◆</span>
                                    <span style="font-weight: bolder;">围栏告示：</span>自去年夏天站点新增了“评论回复”功能后，至今时隔十余月，在芒种前夕本站久违地上线“围栏告示”功能，本公告栏会不定时更新，持续跟进记录最新站点功能调整日志，更多精彩内容请敬请期待。
                                </li>
                                <li style="margin-bottom: 0.8rem; /* PC端 */
                                         position: relative;
                                         list-style-type: none;
                                         /* 移动端适配 */
                                         @media (max-width: 768px) {
                                             margin-bottom: 0.6rem;
                                         }">
                                    <span style="position: absolute;
                                               left: -1.8rem; /* PC端 */
                                               color: #6cc70b;
                                               /* 移动端适配 */
                                               @media (max-width: 768px) {
                                                   left: -1.5rem;
                                               }">◆</span>
                                    <span style="font-weight: bolder;">图片查看：</span>最近几周时间里，考虑到图文流量费用收取问题，暂时关闭了七牛云对象存储私有空间访问权限，故博文内的图文无法正常预览，择日考虑开启访问权限。
                                </li>
                                <li style="margin-bottom: 0.8rem; /* PC端 */
                                         position: relative;
                                         list-style-type: none;
                                         /* 移动端适配 */
                                         @media (max-width: 768px) {
                                             margin-bottom: 0.6rem;
                                         }">
                                    <span style="position: absolute;
                                               left: -1.8rem; /* PC端 */
                                               color: #6cc70b;
                                               /* 移动端适配 */
                                               @media (max-width: 768px) {
                                                   left: -1.5rem;
                                               }">◆</span>
                                    <span style="font-weight: bolder;">壁纸下载：</span>后续计划实现壁纸下载功能，均为个人收集的共150+超高分辨率精美壁纸，提供在线预览以及下载功能。
                                </li>
                                <li style="margin-bottom: 0.8rem; /* PC端 */
                                         position: relative;
                                         list-style-type: none;
                                         /* 移动端适配 */
                                         @media (max-width: 768px) {
                                             margin-bottom: 0.6rem;
                                         }">
                                    <span style="position: absolute;
                                               left: -1.8rem; /* PC端 */
                                               color: #6cc70b;
                                               /* 移动端适配 */
                                               @media (max-width: 768px) {
                                                   left: -1.5rem;
                                               }">◆</span>
                                    <span style="font-weight: bolder;">阅读体验：</span>规划完善文章内分页功能，并提供“最近更新”的文章列表，计划收录更新率较高的文章，譬如：阳台日记、叙事之外、岁月如歌、游戏人生等等，尽可能多的提升在线浏览和阅读体验。
                                </li>
                                <li style="margin-bottom: 0.8rem; /* PC端 */
                                         position: relative;
                                         list-style-type: none;
                                         /* 移动端适配 */
                                         @media (max-width: 768px) {
                                             margin-bottom: 0.6rem;
                                         }">
                                    <span style="position: absolute;
                                               left: -1.8rem; /* PC端 */
                                               color: #6cc70b;
                                               /* 移动端适配 */
                                               @media (max-width: 768px) {
                                                   left: -1.5rem;
                                               }">◆</span>
                                    <span style="font-weight: bolder;">友链完善：</span>持续优化完善友链页面，整理归档个人常用的高质量网站合集，无偿分享给有缘人。
                                </li>
                                <li style="margin-bottom: 0.8rem; /* PC端 */
                                         position: relative;
                                         list-style-type: none;
                                         /* 移动端适配 */
                                         @media (max-width: 768px) {
                                             margin-bottom: 0.6rem;
                                         }">
                                    <span style="position: absolute;
                                               left: -1.8rem; /* PC端 */
                                               color: #6cc70b;
                                               /* 移动端适配 */
                                               @media (max-width: 768px) {
                                                   left: -1.5rem;
                                               }">◆</span>
                                    <span style="font-weight: bolder;">音乐餐厅：</span>历经十余小时不间断调研和尝试，本站成功上线”音乐餐厅”功能，目前仅收录了个人在QQ音乐平台积累的两份歌单，再匆忙也要记得点播一首喜欢的音乐，没有音乐熏陶的心灵终究是充满缺憾的。
                                </li>
                                <li style="margin-bottom: 0.8rem; /* PC端 */
                                         position: relative;
                                         list-style-type: none;
                                         /* 移动端适配 */
                                         @media (max-width: 768px) {
                                             margin-bottom: 0.6rem;
                                         }">
                                    <span style="position: absolute;
                                               left: -1.8rem; /* PC端 */
                                               color: #6cc70b;
                                               /* 移动端适配 */
                                               @media (max-width: 768px) {
                                                   left: -1.5rem;
                                               }">◆</span>
                                    <span style="font-weight: bolder;">三言两语：</span>每张照片都是时光的便签，随手一贴就记下了那天，本站结合Mamos实现并注入留言板功能，随缘记录那些藏在照片背后的故事。
                                </li>
                                <li style="margin-bottom: 0.8rem; /* PC端 */
                                         position: relative;
                                         list-style-type: none;
                                         /* 移动端适配 */
                                         @media (max-width: 768px) {
                                             margin-bottom: 0.6rem;
                                         }">
                                    <span style="position: absolute;
                                               left: -1.8rem; /* PC端 */
                                               color: #6cc70b;
                                               /* 移动端适配 */
                                               @media (max-width: 768px) {
                                                   left: -1.5rem;
                                               }">◆</span>
                                    <span style="font-weight: bolder;">旧梦轻拾：</span>更新全站博客文章所属分类，共设有代码锋芒、部署之道、旧梦轻拾、人间片刻等十余种分类。
                                </li>
                                <li style="margin-bottom: 0.8rem; /* PC端 */
                                         position: relative;
                                         list-style-type: none;
                                         /* 移动端适配 */
                                         @media (max-width: 768px) {
                                             margin-bottom: 0.6rem;
                                         }">
                                    <span style="position: absolute;
                                               left: -1.8rem; /* PC端 */
                                               color: #6cc70b;
                                               /* 移动端适配 */
                                               @media (max-width: 768px) {
                                                   left: -1.5rem;
                                               }">◆</span>
                                    <span style="font-weight: bolder;">方寸之间：</span>博客应用版发布，更便捷的阅读体验来了！现已正式推出独立的桌面应用程序与移动端应用程序，暂时通过网盘和代码库提供安装包。
                                </li>
                                <p style="margin-bottom: 0; text-align: right; font-size: 0.9rem; color: #8a8a8a;">
                                    此公告最后更新于：<span style="color: #6cc70b;">2025/09/30晚</span>
                                </p>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>

            <!-- 公告页脚 - 响应式设计 -->
            <div class="modal-footer"
                 style="border-top: 1px solid rgba(255,255,255,0.2);
                        padding: 1rem 1.5rem; /* PC端 */
                        justify-content: space-between;
                        /* 移动端适配 */
                        @media (max-width: 768px) {
                            padding: 0.8rem;
                        }">
                <small style="color: #ffffff;
                            font-size: 0.9rem; /* PC端 */
                            /* 移动端适配 */
                            @media (max-width: 768px) {
                                font-size: 0.8rem;
                            }">
                    <i class="iconfont icon-pen"></i>
                    <i class="fas fa-info-circle mr-1"></i>芒种前夕 · 旅途第813天
                    · 2025/05/28
                </small>
                <button id="confirm-btn" type="button" class="btn btn-sm" data-dismiss="modal"
                        style="background: #a0a0a0;
                               color: #ffffff;
                               border-radius: 4px;
                               padding: 0.5rem 1.2rem; /* PC端 */
                               border: none;
                               font-size: 0.9rem;
                               /* 移动端适配 */
                               @media (max-width: 768px) {
                                   padding: 0.3rem 0.8rem;
                                   font-size: 0.85rem;
                               }">
                    <i class="fas fa-check mr-1" style="color: #ffffff;">心已阅</i>
                </button>
            </div>
        </div>
    </div>
</div>

<style>
  .notice-title {
    display: flex;
    align-items: center;
    white-space: nowrap;
  }

  .notice-title:before,
  .notice-title:after {
    content: "";
    flex: 1;
    height: 1px;
    background: #ddd; /* 横线颜色 */
    margin: 0 10px; /* 横线与文字的间距 */
  }
</style>


<style>
  /* 响应式模态框宽度 */
  @media (min-width: 992px) {
    #modalNotice .modal-dialog {
      max-width: 800px;
    }
  }

  @media (max-width: 991px) {
    #modalNotice .modal-dialog {
      margin: 0.5rem auto;
    }
  }
</style>

<script>
  // 页面加载完成后执行
  document.addEventListener('DOMContentLoaded', function () {
    // 检查是否首次访问
    if (!localStorage.getItem('hasShownPopup')) {
      // 动态加载notice.ejs内容
      fetch('_partials/notice.ejs')  // 替换为实际路径
        .then(response => response.text())
        .then(html => {
          // 插入到页面body末尾
          document.body.insertAdjacentHTML('beforeend', html);

          // 手动初始化Bootstrap模态框
          $('#modalNotice').modal('show');

          // 标记为已显示
          localStorage.setItem('hasShownPopup', 'true');

          // 监听关闭事件
          $('#modalNotice').on('hidden.bs.modal', function () {
            // 可选的后续处理
          });
        })
        .catch(error => {
          console.error('加载公告栏失败:', error);
          // 备用方案：显示简单弹窗
          const fallbackHTML = `
                <div class="modal-backdrop" style="/* 样式 */">
                    <div class="modal-content">/* 内容 */</div>
                </div>`;
          document.body.insertAdjacentHTML('beforeend', fallbackHTML);
        });
    }
  });
</script>

    

    
  </main>

  <footer>
    <!-- 博客 - 页脚 -->
<div class="footer-inner">
  
    <div class="footer-content">
       <a href="https://hexo.fluid-dev.com/docs/guide/" target="_blank" rel="nofollow noopener"> <span>Memory | 个人文档站点</span> </a>
<i class="iconfont icon-love"></i> <a href="https://hexo.fluid-dev.com/docs/guide/" target="_blank" rel="nofollow noopener"> <span>配置指南 | Hexo Fluid 用户手册</span> </a> 
    </div>
  

  

  
    <!-- 备案信 ICP for China -->
    <div class="beian">
  <span>
    <a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow noopener">
      京ICP证123456号
    </a>
  </span>
  
    
      <span>
        <a
          href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=12345678"
          rel="nofollow noopener"
          class="beian-police"
          target="_blank"
        >
          
            <span style="visibility: hidden; width: 0">|</span>
            <img src="/blog/img/police_beian.png" alt="police-icon"/>
          
          <span>京公网安备12345678号</span>
        </a>
      </span>
    
  
</div>

  

  

</div>

<!-- 评论框美化 -->
<style>
    #comments .veditor{
        min-height: 20vh;
        background-image: url(http://blog.memory-life.icu/pathway0716.jpg);
        background-size: contain;
        background-repeat: no-repeat;
        background-position: right;
        background-color: rgba(255,255,255,0);
        resize: none;}
</style>

<script>
    //   自定义邮箱审核规则
    document.body.addEventListener('click', function(e) {
        if (e.target.classList.contains('vsubmit')) {
            const email = document.querySelector('input[type=email]');
            const nick = document.querySelector('input[name=nick]');
            const reg = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
            if (!email.value || !nick.value || !reg.test(email.value)) {
                const str = `<div class="valert text-center"><div class="vtext">请填写正确的昵称和邮箱！</div></div>`;
                const vmark = document.querySelector('.vmark');
                vmark.innerHTML = str;
                vmark.style.display = 'block';
                setTimeout(function() {
                    vmark.style.display = 'none';
                    vmark.innerHTML = '';
                }, 2500);
            }
        }
    })
</script>



  </footer>

  <!-- Scripts -->
  
  <script  src="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.js" ></script>
  <link  rel="stylesheet" href="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.css" />

  <script>
    NProgress.configure({"showSpinner":false,"trickleSpeed":100})
    NProgress.start()
    window.addEventListener('load', function() {
      NProgress.done();
    })
  </script>


<script  src="https://lib.baomitu.com/jquery/3.6.0/jquery.min.js" ></script>
<script  src="https://lib.baomitu.com/twitter-bootstrap/4.6.1/js/bootstrap.min.js" ></script>
<script  src="/blog/js/events.js" ></script>
<script  src="/blog/js/plugins.js" ></script>


  <script  src="https://lib.baomitu.com/typed.js/2.0.12/typed.min.js" ></script>
  <script>
    (function (window, document) {
      var typing = Fluid.plugins.typing;
      var subtitle = document.getElementById('subtitle');
      if (!subtitle || !typing) {
        return;
      }
      var text = subtitle.getAttribute('data-typed-text');
      
        typing(text);
      
    })(window, document);
  </script>







  
<script>
  Fluid.utils.createScript('https://lib.baomitu.com/tocbot/4.18.2/tocbot.min.js', function() {
    var toc = jQuery('#toc');
    if (toc.length === 0 || !window.tocbot) { return; }
    var boardCtn = jQuery('#board-ctn');
    var boardTop = boardCtn.offset().top;

    window.tocbot.init(Object.assign({
      tocSelector     : '#toc-body',
      contentSelector : '.markdown-body',
      linkClass       : 'tocbot-link',
      activeLinkClass : 'tocbot-active-link',
      listClass       : 'tocbot-list',
      isCollapsedClass: 'tocbot-is-collapsed',
      collapsibleClass: 'tocbot-is-collapsible',
      scrollSmooth    : true,
      includeTitleTags: true,
      headingsOffset  : -boardTop,
    }, CONFIG.toc));
    if (toc.find('.toc-list-item').length > 0) {
      toc.css('visibility', 'visible');
    }

    Fluid.events.registerRefreshCallback(function() {
      if ('tocbot' in window) {
        tocbot.refresh();
        var toc = jQuery('#toc');
        if (toc.length === 0 || !tocbot) {
          return;
        }
        if (toc.find('.toc-list-item').length > 0) {
          toc.css('visibility', 'visible');
        }
      }
    });
  });
</script>


  <script src=https://lib.baomitu.com/clipboard.js/2.0.11/clipboard.min.js></script>

  <script>Fluid.plugins.codeWidget();</script>


  
<script>
  Fluid.utils.createScript('https://lib.baomitu.com/anchor-js/4.3.1/anchor.min.js', function() {
    window.anchors.options = {
      placement: CONFIG.anchorjs.placement,
      visible  : CONFIG.anchorjs.visible
    };
    if (CONFIG.anchorjs.icon) {
      window.anchors.options.icon = CONFIG.anchorjs.icon;
    }
    var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(',');
    var res = [];
    for (var item of el) {
      res.push('.markdown-body > ' + item.trim());
    }
    if (CONFIG.anchorjs.placement === 'left') {
      window.anchors.options.class = 'anchorjs-link-left';
    }
    window.anchors.add(res.join(', '));

    Fluid.events.registerRefreshCallback(function() {
      if ('anchors' in window) {
        anchors.removeAll();
        var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(',');
        var res = [];
        for (var item of el) {
          res.push('.markdown-body > ' + item.trim());
        }
        if (CONFIG.anchorjs.placement === 'left') {
          anchors.options.class = 'anchorjs-link-left';
        }
        anchors.add(res.join(', '));
      }
    });
  });
</script>


  
<script>
  Fluid.utils.createScript('https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.js', function() {
    Fluid.plugins.fancyBox();
  });
</script>


  <script>Fluid.plugins.imageCaption();</script>

  <script  src="/blog/js/local-search.js" ></script>

  <script defer src="/blog/js/leancloud.js" ></script>




    
<script src="https://cdn.jsdelivr.net/npm/aplayer@1.10.1/dist/APlayer.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js"></script>



<!-- 主题的启动项，将它保持在最底部 -->
<!-- the boot of the theme, keep it at the bottom -->
<script  src="/blog/js/boot.js" ></script>


  

  <noscript>
    <div class="noscript-warning">博客在允许 JavaScript 运行的环境下浏览效果更佳</div>
  </noscript>
</body>
</html>
